在AppDelegate中执行此操作:
viewController = [[RootViewController alloc] initWithNibName:nil bundle:nil];
不定义viewController的视图(使用setView
或viewController.view=
)并仅添加视图的subviews
是否有任何问题?如果将大多数应用程序显示的内容放在子视图而不是主根view
属性本身,会有什么不同?
如果viewController.view
仍然是nil
(或者如果没有loadView
或nib的实现,那么它处于什么状态)但是你主动操纵{{1 }
答案 0 :(得分:0)
如果没有nib且没有loadView的实现,则.view
设置为普通的UIView。所以可以添加子视图。如果view属性为nil,则调用loadView重新加载它。
此方法的默认实现查找有效的nib信息,并使用该信息加载关联的nib文件。如果未指定nib信息,则默认实现会创建一个普通的UIView对象并使其成为主视图。
答案 1 :(得分:0)
如果viewController.view
为零,则 是一个问题,因为它没有显示视图或您要添加子视图。但是,如果在初始化viewController时未指定nibName
并且没有与UIViewController的子类同名的nib,viewController.view
将最终作为占据整个屏幕的空白视图,即不是零。
说你在子视图中显示内容而不是主视图有点尴尬,因为实际上你的子视图只是主视图的(子)部分。您几乎不会直接在顶级视图中绘制/显示内容; 99.9%的时间你会使用像UILabels,UITextViews,UIImageViews等子视图来做到这一点,这会被添加为顶级视图的子视图。
答案 2 :(得分:0)
我必须自己做这件事。您可以定义没有笔尖的UIViewController
。所以你会做[MyUIViewController new];
之类的事情。但是你必须给它的视图至少一个背景颜色,否则它将不会显示。所以:
myView = [MyUIViewController new];
myView.backgroundColor = [UIColor whiteColor];
[self presentModalViewController:myView animated:YES];