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)viewControllersでリリースを呼び出しているようです... ARCはリリースの必要性を排除します。3)最初の行に「self.parentViewController.parentViewController」があります??? 4) nib で init を使用しています... ストーリーボードとセグエを使用しないのはなぜですか? 私は同じ種類のプロジェクトを仕上げているので、これらのいくつかを取り上げます...もともとiOS3用に作成されたアプリをiOS6に移動します。多くの変更があったため、実際にはアプリ全体を書き直さなければなりませんでした。

于 2013-01-09T10:30:54.437 に答える