在试图找出为什么viewWillAppear没有在我的应用程序中被调用时,我遇到了一个可能是我对UIViewController子类的预期用途的严重误解.
根据以下帖子viewWillAppear在使用addSubView时不运行!以及此博客文章的链接:http://blog.carbonfive.com/2011/03/09/abusing-uiviewcontrollers/ UIViewController子类化应该只在非常具体的情况下发生.最值得注意的是,当直接添加到UIWindow或其他Apple创建的自定义控制器(如UINavigationControllers)时.
我肯定会将UIViewController子类的视图添加到其他UIViewController子类的视图中.
事实上,我认为这或多或少是苹果公司实施MVC的整体想法......一个整体的风险投资公司,其他风险投资公司都在下面,所有人都乐于获得他们的代表方法.
如果有,而不是通过控制了很多意见(其定义需要控制)来了,在一个应用程序去,很多screenfulls的,在该职位描述的模型中,每个screenfull应该有一个主VC子类,所有的子视图自定义控制器(碰巧控制视图)是简单NSObject的子类.
在这种情况下,UIViewControllers应该只是直接到Window或UINavigationController,UITabBarController等?
您是否可以保证在这种情况下调用UIVC Delegate方法?当viewcontroller的视图是另一个VC的子视图时,这与手动调用委托方法有何不同?
老实说,这似乎是浪费时间.viewDidLoad中,viewDidLoad中,viewDidUnload,viewWillAppear中的自定义实现,viewWillDisappear何况事情就这么简单公司,比如,"意见"的属性...
所以基本上,要么我完全错了,要么就是在疯狂追逐.如果不能指望UIViewController子类调用viewWillAppear,为什么不手动调用该方法,并完成它?
为什么要复制UIViewController的所有感知功能?
虽然在iOS 4.3编码之前,我发现在将视图控制器的视图添加到另一个视图时[superview addSubView:controller.view],控制器实例将不会收到-viewWillAppear/viewDidAppear消息,比我在堆栈溢出中的某些线程中发现相同的问题.之后,我-viewWillAppear/-viewDidAppear根据需要手动调用.
但是,升级到之后iOS 5.0,UIView发生了一些活泼的行为.最后我发现在iOS 5中 [superview addSubView:controller.view],会-viewWillAppear/-viewDidAppear自动向控制器实例发送一条消息,加上我的手动调用,每次控制器动作其行为时都会有两条重复的消息.
我也发现了一个类似的问题:iOS 5:在解除iPad中的模态后没有调用-viewWillAppear
现在,问题是,在搜索苹果的文档之后,我没有找到关于这些问题的差异的明确文档.我甚至怀疑这是否是iOS 5.0中保证的视图生命周期行为.
有没有人解决类似问题或找到关于这些差异的一些指导.因为我想要运行我的应用程序4.x & 5.x iOS.
什么对象负责UIViewController旋转旋转方法调用,即:
shouldAutorotateToInterfaceOrientation:willRotateToInterfaceOrientation:duration:willAnimateFirstHalfOfRotationToInterfaceOrientation:duration:willAnimateSecondHalfOfRotationFromInterfaceOrientation:duration:didRotateFromInterfaceOrientation:我想它是UIApplication(但可能是AppDelegate或UIWindow).
接下来的问题是,对象如何知道UIViewController要与谁交谈?
它如何知道哪个UIViewController视图作为窗口的子视图?
是否有可以发送的消息或您可以设置的属性(某些对象)UIViewController为应用程序设置"活动" ?
在我的标签栏中,我有四个视图控制器,一个中发生的事情会影响另一个视图,所以我可能需要在视图控制器可见时重新加载一些元素.通常我会通过实现viewWillAppear来解决这个问题,但是当我在选项卡之间切换时,似乎没有调用viewWillAppear.我该如何解决这个问题,或者我应该做些什么呢?
更新:作为PS我应该补充一点,这是一个导航控制器层次结构中的tabbarcontroller
干杯
聂
cocoa-touch uitabbarcontroller uiviewcontroller viewwillappear
这就是问题:当MessageComposeViewController被解除时,我的textView不会成为第一个响应者,键盘也不会出现.为什么?我把[textView becomeFirstResponder]代码放进去了viewWillAppear.我能怎么做??