1

2 つの UITableView を含む UIViewController があります。最初の UITableView で行を選択すると、同じ UIViewController をプッシュする必要がありますが、これは発生しません。

UIViewController.hi には、

FirstTableViewController *firstController;
SecondTableViewController *secondController;

UIViewController.mi には、

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    if (firstController == nil) {
        firstController = [[FirstTableViewController alloc] init];
    }
    if (secondController == nil) {
        secondController = [[SecondTableViewController alloc] init];
    }
    UINavigationController *firstNavigationController = [[UINavigationController alloc] initWithRootViewController:firstController];
    firstController.product = self.product;
    [firstTable setDataSource:firstController];
    [firstTable setDelegate:firstController];
    firstNavigationController.view = firstController.tableView;
}

FirstTableViewController.m では、didSelectRowAtIndexPath 私が持っている、

[self.searchDisplayController setActive:YES animated:YES];
UIViewController *controller = [[UIViewController alloc]initWithNibName:@"UIViewController" bundle:nil];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:controller];
navController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
controller.product = prod;
NSLog(@"Navigation controller is %@",self.navigationController); //not null
[[self navigationController]pushViewController:controller animated:YES];

助けてください。

編集 #1: UIViewController は、UtilityApp の FlipsideViewController から呼び出されます。

4

4 に答える 4

1

プロパティを AppDelegateUINavigationController *nav に追加します この行をアプリケーションの didFinishLaunching メソッドの AppDelegate.m に追加します

navigationControl = [[UINavigationController alloc] initWithRootViewController:yourFirst ViewController];

yourFirstViewController に移動し、UINavigationController *navプロパティを追加して、これらの行を viewDidLoad メソッドに追加します

AppDelegate *app = [[UIApplication sharedApplication] delegate];
self.nav = app.nav;

この行を使用して、viewController をプッシュします

[self.nav pushViewController:controller animated:YES];
于 2012-08-27T11:27:07.513 に答える
0

View Controller をモーダルに表示したい場合はpresentViewController:animated:completion:、 ではなく andを使用する必要がありpushViewController:animated:ます。

[self presentViewController:controller animated:YES completion:nil];
于 2012-08-27T11:03:16.863 に答える
0

LoginViewSimpleController *loginViewSimple = [[LoginViewSimpleController alloc]init];

UINavigationController *navController = [[UINavigationController alloc]initWithRootViewController:loginViewSimple];

[self setNavigationController:navController];

両方のテーブルビューを特定しましたか? ここにログステータスを投稿できますか?

于 2012-08-27T11:47:04.467 に答える
0

「didSelectRowAtIndexPath」でこのコードを使用します

UIViewController *controller = [[UIViewController alloc]initWithNibName:@"UIViewController" bundle:nil];


     [self.navigationController pushViewController:controller animated:YES];

     [viewController release];
于 2012-08-27T11:08:06.717 に答える