在iPad纵向方向上的iOS6上,在btn上单击RootViewController更改DetailViewController失败

时间:2012-10-21 10:34:20

标签: ipad ios6 uisplitviewcontroller xcode4.5 detailview

我将我的应用程序从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)

非常感谢您的帮助!

谢谢。

1 个答案:

答案 0 :(得分:0)

我看到的一些你可能想看的东西:1)为什么你不使用didSelectRowAtIndexPath而不是这个自定义方法? 2)看来你在viewControllers上调用了一个版本...... ARC消除了释放的需要。 3)在第一行你有“self.parentViewController.parentViewController”??? 4)你正在使用带有笔尖的init ...为什么不使用storyboard和segues? 我带来了一些,因为我正在完成同样的项目......将最初为iOS3编写的应用程序移动到iOS6。我几乎不得不重写整个应用程序,因为这已经发生了很大变化。