MGSplitViewController更改详细视图控制器。

3

使用MGSplitViewController,我如何更改详细视图控制器?

有一个声明的属性:

@property (nonatomic, retain) IBOutlet UIViewController *detailViewController; // convenience.

执行 splitVC.detailViewController = myVC; 没有效果。相反,我必须执行 splitVC.viewControllers = @[masterVC, myVC];

这样做是有效的,但这是正确的方法吗?

谢谢!

3个回答

2
你做得很好。来自 UISplitViewController 参考文档:

分割视图控制器本身没有重要的界面。它的工作是管理其两个子视图控制器的呈现和不同方向之间的转换。

另外:

你必须为分割视图控制器分配两个视图控制器。通常,你在故事板中配置这些视图控制器;如果你以编程方式创建分割视图控制器,则使用 viewControllers 属性进行分配。


谢谢,我只是想确认一下 :). 这有点令人困惑,因为该属性被声明为retain,而不是readonly。 - 0xSina

1
使用MGSplitViewController时,设置detailViewController的一种方法是在不重置所有内容的情况下进行设置,这似乎非常低效。可以设置detailViewController,然后调用layoutSubviews
splitViewController.detailViewController = myVC;
[splitViewController layoutSubviews];

这样可以避免浪费性能,因为不需要移除主视图控制器的视图并重新设置。

希望这可以帮到您!


-3

不,这不是正确的方式,相反应该在导航控制器中分配您的主视图控制器和细节视图控制器,例如:

UINavigationController *nav1 = [[UINavigationController alloc] initWithRootViewController:masterViewController];

同样,用于详情的也需要一个nav2,然后编写相应代码。

splitViewController = [[UISplitViewController alloc] init];
splitViewController.viewControllers = [NSArray arrayWithObjects:nav1,nav2, nil];
splitViewController.delegate = detailViewController;

就这样。 希望能有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接