我的其中一个应用程序现在出现了一个愚蠢的UI问题。
我从UINavigationController开始,它是Storyboard中的Initial View Controller。根视图控制器是一个UIViewController,还有一个UIScrollView作为子视图。 UIScrollView本身已启用分页,并包含多个UIViewControllers。
现在这是我的问题:UIScrollView中的UIViewControllers(让它们称为View#1)应该对按钮事件做出反应,并与另一个需要从先前的UIViewController获取数据并需要发送的UIViewController(View#2)联系起来数据通过委托方法返回。
当我尝试获取UINavigationController并将其推入View#2时,什么也没发生。通过presentViewController进行显示当然可以。
您能帮我一下吗,告诉我这行不通,何时不行?我在这一点上有点卡住,我不知道如何进行。
最佳答案
请勿将UIViewControllers放在另一个违反Apple开发准则的UIViewController(至少是iOs5之前的版本)中。
UIViewControllers的生命周期是在内部进行管理的,如果您直接将UIViewController作为子视图添加,则很多方法都可以,例如
viewDidLoad
viewWillAppear
viewDidAppear
。
。
。
不会被召唤,根据我的经验,这会导致行为异常
尝试使用自定义UIView对象获取每个视图的内部逻辑
同意这在某种程度上打破了MVC模式,但这将是解决您的问题的最佳方法
但是iOS 5.0添加了包含UIViewControllers的容器,该容器通过添加子视图控制器来正确处理那些生命周期事件。因此,如果您仅定位发布iOs 5的设备,这可能是解决问题的一种好方法
看看this和this
关于ios - UINavigationController中的UIScrollView中的UIViewController要推送新的Controller,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12950530/