我将我的应用程序从iOS3.2移植到iOS6。在iPad上,我使用SplitViewController。
在RootViewController中,我有一个表视图。如果用户单击表视图中的行,我将更改DetailViewController。
执行此操作的代码是:
- (void)setDetailViewAuthorPage {
UISplitViewController *splitViewController =
(UISplitViewController *)self.parentViewController.parentViewController;
UIViewController *detail =
[splitViewController.viewControllers objectAtIndex:1];
DetailViewControllerAuthorPageiPad <SubstitutableDetailViewController>
*detailViewController =
[[DetailViewControllerAuthorPageiPad alloc]
initWithNibName:@"DetailViewControllerAuthorPageiPad"
bundle:nil];
NSArray *viewControllers =
[[NSArray alloc]
initWithObjects:self.navigationController,
detailViewController,
nil];
splitViewController.viewControllers = viewControllers;
[detailViewController viewWillAppear:YES];
[viewControllers release];
// Dismiss the popover if it's present.
if (popoverController != nil) {
[popoverController dismissPopoverAnimated:YES];
}
[detailViewController
showRootPopoverButtonItem:self.rootPopoverButtonItem
root:self];
在横向方向,此代码可以正常工作。
在纵向方向上,DetailViewController不会更改。该行被选中并且上面的代码正在运行但是没有看到DetailViewController更改。 (我正在使用Xcode 4.5)
非常感谢您的帮助!
谢谢。
答案 0 :(得分:0)
我看到的一些你可能想看的东西:1)为什么你不使用didSelectRowAtIndexPath而不是这个自定义方法? 2)看来你在viewControllers上调用了一个版本...... ARC消除了释放的需要。 3)在第一行你有“self.parentViewController.parentViewController”??? 4)你正在使用带有笔尖的init ...为什么不使用storyboard和segues? 我带来了一些,因为我正在完成同样的项目......将最初为iOS3编写的应用程序移动到iOS6。我几乎不得不重写整个应用程序,因为这已经发生了很大变化。