0

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

非常感谢您的帮助!

谢谢你。

4

1 回答 1

0

我看到你可能想看看的几件事:1)你为什么不使用 didSelectRowAtIndexPath 而不是这个自定义方法?2) 看来您正在调用视图控制器上的发布... ARC 消除了发布的需要。3)在第一行你有“self.parentViewController.parentViewController”???4)您正在使用带有笔尖的初始化......为什么不使用情节提要和segues?我提出其中一些是因为我正在完成同类型的项目......将最初为 iOS3 编写的应用程序移动到 iOS6。我实际上不得不重写整个应用程序,因为已经发生了很大变化。

于 2013-01-09T10:30:54.437 回答