使用 MGSplitView 控制器更改视图
Posted
技术标签:
【中文标题】使用 MGSplitView 控制器更改视图【英文标题】:Changing Views with MGSplitView Controller 【发布时间】:2011-06-03 12:29:43 【问题描述】:在 io 正在创建的应用程序中,我有 UISplitView 控制器 MGSplitViewController 的自定义副本。我已经在我的项目中实现了它,该项目从苹果的 MultipleDetailViews 示例代码开始。
我遇到了一个问题,我似乎无法在视图控制器之间切换。当我推送 tableview 单元格时,detailview 控制器应该根据分配的 nib 进行更改,但这不会发生。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
/*
Create and configure a new detail view controller appropriate for the selection.
*/
NSUInteger row = indexPath.row;
UIViewController *detailViewController = nil;
if (row == 0)
FirstDetailViewController *newDetailViewController = [[FirstDetailViewController alloc] initWithNibName:@"FirstDetailView" bundle:nil];
detailViewController = newDetailViewController;
if (row == 1)
SecondDetailViewController *newDetailViewController = [[SecondDetailViewController alloc] initWithNibName:@"SecondDetailView" bundle:nil];
detailViewController = newDetailViewController;
// Update the split view controller's view controllers array.
NSArray *viewControllers = [[NSArray alloc] initWithObjects:self.navigationController, detailViewController, nil];
splitViewController.viewControllers = viewControllers;
[viewControllers release];
[detailViewController release];
通常,此代码足以更改原始多细节视图代码中的视图。
有没有人遇到过类似的问题?有什么想法吗?
【问题讨论】:
【参考方案1】:您只是在创建新的视图控制器。您不会在任何地方添加它们。您可以使用其viewControllers
属性将视图控制器添加到拆分视图控制器。
编辑:我使用过MGSplitViewController
,但我从未尝试过这样更改详细视图。我只是将新的细节视图控制器推到导航控制器上。想要完全更改详细视图控制器是否有特定原因?
【讨论】:
感谢您的快速回复,您能否详细说明该答案。我在给你看的代码下面有这个代码: NSArray *viewControllers = [[NSArray alloc] initWithObjects:self.navigationController, detailViewController, nil]; splitViewController.viewControllers = viewControllers; [viewControllers 发布]; @user 您应该编辑您的问题以包含它。这可能是最相关的部分。 @user,您的代码看起来应该可以工作。我更新了我的答案以提出不同的方法。 我之前对多个详细视图示例代码所做的是,我分离了代表单独页面的 nib 文件,因此当我在表格视图中推送其中一个单元格时,详细视图控制器将根据与其关联的 nib 文件更改其外观。我正在尝试在这里做完全相同的事情,但到目前为止它似乎没有工作。 不同的是我想要mgsplitviewcontroller的功能以上是关于使用 MGSplitView 控制器更改视图的主要内容,如果未能解决你的问题,请参考以下文章
使用 UINavigationController iOS 6 弹回初始视图控制器时方向更改