uipageviewcontroller内的UIbutton点击崩溃

Posted

技术标签:

【中文标题】uipageviewcontroller内的UIbutton点击崩溃【英文标题】:UIbutton tap crash inside uipageviewcontroller 【发布时间】:2014-01-19 23:03:08 【问题描述】:

我有一个 AViewController,它有一个笔尖。 nib 的文件所有者是 AViewController。 在这个视图中,我有一个 UIButton。 UIButton 有一个点击动作,它调用 AViewController 的 buttonTapped:(id)sender 方法。 我有一个 UIPageViewcontroller 将 AViewController 设置为 ViewController。

如果我按下或呈现 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. 

【问题讨论】:

从调试控制台显示崩溃信息。 【参考方案1】:
PViewController *p = [PViewController new];
[[UIApplication sharedApplication].keyWindow.rootViewController.view
    addSubview:p.view];

这是非法的。您不能简单地将视图控制器的视图直接添加到另一个视图控制器的视图中。

为了执行这种移动,您必须经历整个歌舞,其中一个视图控制器成为另一个视图控制器的子视图控制器,并且某些消息按特定顺序发送。

请参阅 Apple 关于此主题的文档:

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

【讨论】:

这是我书中的相关部分:apeth.com/iOSBook/ch19.html#_container_view_controllers 那条评论很有帮助。非常有用。

以上是关于uipageviewcontroller内的UIbutton点击崩溃的主要内容,如果未能解决你的问题,请参考以下文章

UIPageViewController 内的 UISlider

带有 UINavigationBar 的 UIPageViewController 内的 UIWebView

UIPageViewController 内的 UITableViewController,如何防止对角拖动

UIPageViewController EdgeInset 内的 UITableView 问题

uipageviewcontroller 内的 uiwebview 阻止点击翻页

无法返回 UIPageViewController 内的初始页面 ViewController