我有一个UIViewController(MainViewController
),它管理一个包含两个子视图的视图,我使用脚本创建了这两个子视图。现在我希望这两个子视图由它们自己的模型控制器管理,因此应用程序完成的大部分工作都是分布式的,而不是集中在这一个控制器上。
我尝试在视图控制器上设置视图,但它不起作用(至少其他控制器上的viewDidLoad
没有被调用,尽管视图显示)。在MainViewController
的viewDidLoad
中,我有以下内容:
MainNavigationViewController* navigationViewController = [[MainNavigationViewController alloc] init];
MainContentViewController* contentViewController = [[MainContentViewController alloc] init];
navigationViewController.view = self.navigationView;
contentViewController.view = self.contentView;
我该怎么做?还有,这是个好主意吗?
我想你是在找类似
[navigationViewController pushViewController:contentViewController animated:YES];
NavigationViewController有一组视图控制器。您必须将视图控制器推入导航视图堆栈。
viewDidLoad
肯定不会被调用,因为视图已经加载。如果没有调用其他方法(ViewWillExample等),则可以将调用转发给其他ViewController。
我会选择另一种方式,即将已经具有viewController的视图添加到MainViewController。我不完全确定这一点,但我认为ViewController方法将以这种方式调用。
其工作应如下:
为包含导航视图的MainNavigationViewController创建情节提要。为包含内容视图的MainContentViewController创建另一个。从MainViewController的情节提要中删除所有子视图,但将navigationView和contentView保留为空占位符。为mainViewController中的ViewController创建两个属性以存储其引用。在主ViewController的viewDidLoad
中,通过创建其他两个ViewController
self.mainNavigationController = [[UIStoryboard storyboardWithName:@"MainNavigationControllersStoryboardName" bundle:nil] instantiateViewControllerWithIdentifier:@"MainNavigationControllerIdentifier"];
self.mainContentController = [[UIStoryboard storyboardWithName:@"MainContentViewControllersStoryboardName" bundle:nil] instantiateViewControllerWithIdentifier:@"MainContentViewControllerIdentifier"];
并将其视图添加到占位符中:
[self.navigationView addSubview: mainNavigationController.view];
[self.contentView addSubview: mainContentController.view];
我希望您正在使用自动布局,以便视图将调整其大小,否则您将不得不在viewWillLayoutSubview
中设置其框架,以匹配父视图的框架。
在故事板中,您可以将这些子视图放置在容器视图控件中,该控件定义了视图控制器的区域,该区域可以包括子视图控制器。然后,您让该子视图控制器管理子视图。
问题内容: 如何以编程方式为情节提要设置?我想根据不同的启动条件将情节提要板打开到其他视图。 问题答案: 如何 不 使用虚拟初始视图控制器 确保所有初始视图控制器都有一个Storyboard ID。 在情节提要中,取消选中第一个视图控制器中的“是初始视图控制器”属性。 如果您此时运行应用程序,则将阅读: 您会注意到,应用程序委托中的window属性现在为nil。 在应用程序的设置中,转到目标和选项
如何以编程方式设置属性?
问题内容: 已经为此苦苦挣扎了一段时间,似乎永远也找不到直接的答案。 任何帮助表示赞赏! 问题答案: 如果您在导航控制器中: 或者,如果您只想呈现一个新视图:
我见过很多关于如何分别设置ImageView和GridView的高度和宽度的问题。这里,这里,还有这里 但是,我想知道如何设置两者。 这是我的设置。在我的GridView中,我有一个ImageView和一个TextView。我有一些不同宽度和大小的图像,我想调整它们的大小,使其始终是屏幕正方形大小的1/3。下面,我有一段文字描述。 这是我到目前为止的代码。。。 gallerygridview.xm
如何在java中向文本视图添加样式?我试图在我的价值观/风格下添加一个。xml,而不是单独添加每个属性。
我找到了一些关于这个问题的帖子,但是没有一个能解决我的问题。 说像我已经... ViewControlllerA ViewControlllerB 我试图将ViewControlllerB添加为ViewControlllerA中的子视图,但是,它抛出了一个错误,如""。 下面是代码。。。 视图控制器 ViewControllerB只是一个带有标签的简单屏幕。 视图控制器B 编辑