0

モーダル ビューを表示するために、アプリに次のコードがあります。

InfoTableViewController *infoTableViewController = [[[InfoTableViewController alloc] initWithNibName:nil bundle:nil] autorelease];
infoTableViewController.title = @"Pirateometer";
infoTableViewController.navigationItem.rightBarButtonItem =
    [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone
        target:self action:@selector(dismissInfo)] autorelease];

navController = [[UINavigationController alloc] initWithRootViewController:infoTableViewController];
[self presentModalViewController:navController animated:YES];
[navController retain];

ただし、実行すると、ナビゲーション バーの右側にある [完了] ボタンの代わりに [編集] ボタンが表示されます。.rightBarButton を .leftBarButton に変更すると、予想どおり [完了] ボタンが左側に表示されますが、[編集] ボタンが再び右側に表示されます。

コードでこの不要な [編集] ボタンを特別に削除する必要がありますか、それとも最初から表示されている何か間違ったことをしていますか? 削除する必要がある場合、どうすれば削除できますか?

4

1 に答える 1

3

InfoTableViewController の -viewDidLoad メソッドで、右ボタンを編集ボタンに設定していないことを確認してください。

デフォルトの UITableViewController サブクラスのスタブ コードには、これを行うコメント アウトされた行があります。うっかりコメントを外してしまったのではないでしょうか?

-viewDidLoad で設定すると、ここに含まれるコードで既に設定した後に実行されます。メソッドは、viewController が実際にロードされるまで (つまり、モーダルで表示するとき) 実行されないためです。

于 2009-07-10T12:56:32.690 に答える