0

我有一個AViewController,它有一個筆尖。該筆尖的文件所有者是AViewController。 在這個視圖裏面我有一個UIButton。 UIButton有一個tap操作,它調用AViewController的buttonTapped:(id)sender方法。 而我有一個UIPageViewcontroller設置AViewController作爲ViewController。UIbutton在uipageviewcontroller裏面碰撞崩潰

如果我推送或呈現UIPageViewController並點擊按鈕。工作正常。 如果我在rootViewController的視圖中手動添加UIPageViewController的視圖並點擊按鈕,它會崩潰。

任何想法爲什麼?

代碼剪斷:

PViewController *p = [PViewController new]; 
    // P is the UIPageViewController and it has AViewController in it. 
    [self.navigationController presentViewController:p animated:YES completion:nil]; 
    // Tapping on AViewController's button works fine. 


    PViewController *p = [PViewController new]; 
    [[UIApplication sharedApplication].keyWindow.rootViewController.view addSubview:p.view]; 
    // Adding PageViewControllers view inside rootViewController then tapping on button does not work. 
+0

顯示,從調試控制檯崩潰的消息。 – matt

回答

0
PViewController *p = [PViewController new]; 
[[UIApplication sharedApplication].keyWindow.rootViewController.view 
    addSubview:p.view]; 

這是非法的。您不能直接將視圖控制器的視圖直接添加到其他視圖控制器的視圖。

爲了執行這種動作,您必須完成一個完整的歌舞,其中一個視圖控制器成爲另一個視圖控制器的子視圖控制器,並且某些消息以特定順序發送。

查看此主題的蘋果的文檔:

https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomContainerViewControllers/CreatingCustomContainerViewControllers.html#//apple_ref/doc/uid/TP40007457-CH18-SW6

+0

這裏是我的書的相關部分:http://www.apeth.com/iOSBook/ch19.html#_container_view_controllers – matt

+0

該評論幫助了很多。很有用。 –