使用 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 弹回初始视图控制器时方向更改

如何使用子视图控制器中的按钮单击更改 tabBar 项目标题

弹出其他视图控制器时如何更改弹出视图大小

更改父视图控制器背景颜色

如何使用界面生成器动态更改视图控制器的类