1

我已經使用Xcode 6的Master Detail Application模板創建了一個新的iOS 8項目。我沒有以任何方式更改代碼。爲什麼self.splitViewController == nil?

當在DetailViewController.m中設置斷點並檢查self.splitViewController屬性(如以下屏幕截圖所示)時,它將返回nil

enter image description here

這是爲什麼?

據蘋果UISplitViewController Documentationself.splitViewController應返回最近的SplitViewController

如果接收器或其祖先之一是拆分視圖 控制器的孩子,這個屬性包含擁有拆分視圖控制器。 如果視圖控制器未嵌入 拆分視圖控制器內,則此屬性爲零。

回答

6

不知道你是否想過這件事,但我只是有這個問題,發現什麼是錯的,看起來類似於你的情況。

直到viewDidLoad之後,纔會配置splitViewController屬性。如果偶然你的代碼使用它在viewDidLoad之前觸發,那麼值將爲零。

我注意到你的代碼示例中,configureView是從setDetailItem中調用的。如果這是從prepareForSegue調用的機會,那麼viewDidLoad將不會發生,導致configureView中的splitViewController屬性值爲零。所以代碼必須在[super viewDidLoad]完成後運行。

+1

super.viewDidLoad沒有爲我工作。但無論viewWillAppear還是viewDidAppear都能正常工作。 –

相關問題