【问题标题】:Changing DetailViewController on btn click in RootViewController fails on iOS6 in iPad Portrait Orientation在 iPad Portrait Orientation 中的 iOS6 上,在 RootViewController 中单击按钮时更改 DetailViewController 失败
【发布时间】:2012-10-11 09:56:08
【问题描述】:

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

非常感谢您的帮助!

谢谢。

【问题讨论】:

    标签: ipad ios6 uisplitviewcontroller xcode4.5 detailview


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-02
      • 1970-01-01
      • 1970-01-01
      • 2018-03-21
      相关资源
      最近更新 更多