2015-08-23 7 views
1

Я делаю эту маленькую игру с быстрым, и игра настраивается с помощью viewDidLoad. Каждый день игра должна быть немного другой, но это зависит от того, что работает viewDidLoad. Итак, скажем, пользователь играет на 1-й день и держит игру активным до 2-го дня, игра не будет работать в день 2, так как viewDidLoad не был запущен. Для правильной работы игры мне нужно запускать VieDidLoad каждый раз «applicationDidBecomeActive», чтобы убедиться, что она работает так, как должна.Способ перезагрузки ViewDidLoad при каждом запуске swift

Я пытался сделать так:

func applicationDidBecomeActive(application: UIApplication) 
{ 
myViewController?.viewDidLoad() 
} 

Я также попытался обернуть код, который находится внутри viewDidLoad, как это и запустить его в applicationDidBecomeActive. Но это не так.

override func viewDidLoad() 
{ 
    func refreshView() 
    { 
    //all the code goes here 
    } 
} 

Любая идея, что я могу сделать?

ответ

2

Установите контроллер представления для прослушивания applicationDidBecomeActive уведомлений и запустить метод конфигурации, когда он получает ее

NSNotificationCenter.defaultCenter().addObserver(
    self, 
    selector: "refreshView:", 
    name: UIApplicationDidBecomeActiveNotification, 
    object: nil) 
+0

Попробуй это. Благодаря! – Starlord

+0

Без проблем, надеюсь, это то, что вам нужно. Не забудьте принять мой ответ в качестве решения, если он работает. –

1

viewDidLoad метод не предназначен для загрузки много раз, это будет вызываться только один раз в жизненном цикле viewController, когда вид первой создавал нагрузки в память, и это неправильный подход, вызывайте это снова и снова.

То, что вы хотите, можно без загрузки viewDidLoad снова и снова, переместите метод refreshView из viewDidLoad и назвать его в случае необходимости, вы можете вызвать его однажды сформировать viewDidLoad и после этого вы можете вызвать его снова, когда это необходимо.

Вы можете ответить на применение notification методы, как UIApplicationWillEnterForegroundNotification или в UIApplicationDidBecomeActiveNotification, а затем выяснить, вы хотите, чтобы обновить представление или нет, если вы хотите, чтобы обновить вид просто назвать свой метод refresView.

Ваш код должен выглядеть следующим образом

override func viewDidLoad() 
{ 
    super.viewDidLoad() 
    NSNotificationCenter.defaultCenter().addObserver(self, selector: "OnAppBecameActive", name: UIApplicationDidBecomeActiveNotification, object: nil) 

    refreshView() 
} 

func refreshView() 
{ 
    //all the code goes here 
} 

И добавить этот метод, а

func OnAppBecameActive() 
{ 
// Add logic here to check if need to call refresh view method 
if needToRefreshView 
{ 
    refreshView() 
} 
} 
0

У меня есть один и тот же probelm, но я решить ее с вызовом

self.viewDidLoad() 

На мой Func Я хочу позвонить, мой взгляд снова загрузился.