【发布时间】:2012-06-14 15:22:08
【问题描述】:
我正在重写 UIViewController 中的 loadView 方法,如下所示:
-(void)loadView
{
NSLog(@"HPSFormController loadView starting");
HPSFormView* viewForThisController = [ [ HPSFormView alloc ] initWithFrame:_frame ] ;
self.view = viewForThisController;
}
当在视图中按下某个按钮时,相同的 UIViewController 会再次获得控制权,此时我希望完全更改控制器显示的视图。如下:
-(void)buttonTapped
{
ABCFormView* newview = [ [ ABCFormView alloc ] initWithFrame:_frame ] ;
self.view = newview;
}
但是,buttonTapped 方法不会加载第二个视图。而是显示一个完全空白的视图。
如何让视图控制器在按下按钮时重新加载完全不同的视图?
【问题讨论】:
-
您应该使用导航控制器并推送您使用正确选项集创建的同一 uiviewController 子类的新实例。
-
这不是一个很好的选择,因为视图控制器包含很多我需要复制的模型信息,而且我经常切换视图,所以我会一直弹出和推送控制器.有没有办法简单地更改现有控制器正在管理的 UIView?
-
loadView 和 buttonTapped 之间的 _frame 是否保持一致?
self.view通常由 UIKit 编辑以考虑各种因素。我建议实际上不要更改self.view,而只是添加和删除视图作为self.view的子视图。
标签: objective-c ios uiview uiviewcontroller