まず、私の英語で申し訳ありません。ボタン「次へ」が選択されたときにビューコントローラーをプッシュするナビゲーションコントローラーを備えたiPad用のアプリを実行しようとしています。しかし、ナビゲーション バーのボタンから呼び出されるポップオーバーも必要です。これにより、ユーザーは、あるビュー コントローラーから別のビュー コントローラーに「ジャンプ」して、tableView:didSelectRowAtIndexPath: および pushViewController:animated: メソッドでプッシュできますが、動いていない。
概要:
タブバー-> FirstViewController と SecondViewController を切り替えます (正常に動作します)
ナビゲーションバー ([次へ] ボタン) -> SecondViewController、FirstSlideController、SecondSlideController を切り替える (これも良い)
ポップオーバー-> ユーザーが SecondViewController、FirstSlideController、または SecondSlideController を選択します (ここに問題があります! )
コード:
AppDelegate
UIViewController *viewController1 = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
UINavigationController *navigationController1 = [[UINavigationController alloc] initWithRootViewController:viewController1];
UIViewController *viewController2 = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
UINavigationController *navigationController2 = [[UINavigationController alloc] initWithRootViewController:viewController2];
self.tabBarController = [[UITabBarController alloc] init];
self.tabBarController.viewControllers = @[navigationController1, navigationController2];
self.window.rootViewController = self.tabBarController;
[self.window makeKeyAndVisible];
return YES;
TableViewController(popover) の didSelectRowAtIndexPath メソッド:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if(indexPath.row == 0){
FirstSlideController *detailViewController = [[FirstSlideController alloc] initWithNibName:@"FirstSlideController" bundle:nil];
[self.navigationController pushViewController:detailViewController animated:YES];
}
else if(indexPath.row == 1){
SecondSlideController *detailViewController = [[SecondSlideController alloc] initWithNibName:@"SecondSlideController" bundle:nil];
[self.navigationController pushViewController:detailViewController animated:YES];
}
else{
SecondViewController *detailViewController = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
[self.navigationController pushViewController:detailViewController animated:YES];
}
}
SecondViewController (maros によって提案されたデリゲートを使用)
-(void) showPopover:(id) sender
{
TableViewController *PopoverView = [[TableViewController alloc] initWithNibName:@"TableViewController" bundle:nil];
self.popOver = [[UIPopoverController alloc] initWithContentViewController:PopoverView];
self.popOver.delegate = self;
[self.popOver presentPopoverFromBarButtonItem:self.navigationItem.leftBarButtonItem permittedArrowDirections: UIPopoverArrowDirectionUp animated: YES];
}
self.navigationController を印刷しようとしましたが、null と表示されます。助けていただければ幸いです。
ありがとうございました。