2
我正在經歷一些非常奇怪的事情:self.presentingViewController在iOS 8上破解?
創建一個非常基本的單視圖項目,並將第二個視圖控制器添加到故事板,以及從第一個到第二個的模態segue。從視圖控制器啓動segue並用performSegueWithIdentifier:
以編程方式觸發它。
在模態呈現視圖控制器的viewDidLoad
,添加此日誌:
NSLog(@"%@", self.presentingViewController);
現在運行的iOS 7上的應用程序,你應該得到一個日誌像這樣的:
<ViewController: 0x7fa8e9530080>
這只是應用程序的初始視圖控制器的參考,它提供了模態視圖控制器。
現在在的iOS 8運行同樣的事情,你會得到:
(null)
這是怎麼回事?這是一個已知的問題嗎?當然,我期望在兩個系統上都有完全相同的行爲。
viewDidLoad應該真的用於初始化,在這個階段,不能保證接收器的控制器視圖層次結構已放置在導航樹中。如果這是你的意圖,你應該重寫viewWillAppear或viewDidAppear。儘管它在早期版本中有效,但文檔明確指出它應該用於額外的初始化。它聽起來好像在iOS 8中一樣,接收器的初始化工作正在進行中。 – MDB983 2014-10-16 15:02:50
嗯..這是有道理的..我會做一些測試,並讓你知道如果你應該把你的評論回答 – rdurand 2014-10-16 15:21:47
@ MDB983:事實證明你是正確的,即使在* viewWillAppear:*呈現視圖控制器是組。如果您想將您的評論轉換爲答案,我很樂意接受它。 – rdurand 2014-10-17 07:09:01