【发布时间】:2014-03-12 18:28:32
【问题描述】:
我有 UIViewController 包含另外两个 UIViewControllers 作为属性。
MenuViewController 包含:
@property (nonatomic, strong) TeamsViewController *teamsViewController;
@property (nonatomic, strong) ResultsViewController *resultsViewController;
MenuViewController 包含表格视图,当用户点击“显示团队”单元格时,我需要初始化teamViewController 并显示teamViewController 视图。当用户按下单元格“显示结果”时也是如此,但在这种情况下,我需要显示 resultsViewController 视图。
所以,我通常这样做是在按下单元格时以一种方式初始化控制器并调用 addSubview 方法来添加控制器视图。但我认为这不是一个好的解决方案,对吗?
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (_teamsViewController) _teamsViewController = nil;
_teamsViewController = [TeamsViewController new]
[self.view addSubView:_teamsViewController];
}
上面的方法可以吗?
我的视图层次结构中的每一个都由自己的控制器管理。所以白色由 MenuViewController 管理,灰色视图由 ResultViewController 管理,蓝色视图由 TeamsViewController 管理。
正如我之前所说,当我点击菜单视图控制器中的相应单元格时,我需要显示团队或结果。但是每个视图都有另一个视图控制器。或者我对视图控制器范式感到困惑?也许 TeamsViewController 应该是 TeamsView 而 ResultsViewController 应该是 ResultsView ?因此,两个视图控制器都具有在其控制器中管理的表。所以我不认为它必须是 UIView 而不是 UIViewController。
【问题讨论】:
-
使用 uinavigationcontroller 作为 MenuViewController 的基类并将其他视图控制器推送到导航堆栈可能更容易。这也将为您提供内置的“返回”功能。
-
@MySpecialPurpose 但在这种情况下,我需要在主视图控制器视图上添加 uinaviagtioncontroller 视图,对吗?
-
它可以是不同的设备,但主要是表格视图位于顶部站点和底部,我有类似容器视图的东西,我通过添加视图控制器视图来实现。
-
@MySpecialPurpose 我喜欢导航的想法,所以我可以添加一个视图,然后推送另一个视图控制器
-
当我将 navigationcontroller 视图作为 suview 添加到我的视图中时,我的框架出现了问题,我使用此代码,然后我可以看到整个视图 [_containerNavigationController.view setFrame:CGRectMake(247, 64, 10000, 10000 )];如果我使用 700 作为高度,我推送的视图将被切断,但它的视图大小为 700 x 700。你是否遇到过同样的问题
标签: ios uiviewcontroller