12

UITableViewController を含む UINavigationController があります。UIBarButtonItem の下部にツールバーを表示したい。ツールバーは表示されますが、ボタンは表示されません。誰でも理由を知っていますか?

  - (void)viewDidLoad {
        [super viewDidLoad];
     [[self navigationItem] setTitle:@"Selections List"];
     [[self navigationItem] setRightBarButtonItem:[[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addProjectSearch:)] autorelease]];
        [[self navigationItem] setLeftBarButtonItem:[self editButtonItem]];
     [[super tableView] setDataSource: self];
     [[super tableView] setDelegate: self];

     //Toolbar 
     UIBarButtonItem * logoutButton = [[[UIBarButtonItem alloc] initWithTitle:@"Log out" style:UIBarButtonItemStylePlain target:self action:@selector(logOut:)]autorelease];
     NSMutableArray * arr = [NSMutableArray arrayWithObjects:logoutButton, nil];
     [[self navigationController] setToolbarHidden: NO animated:YES];
     [[self navigationController] setToolbarItems:arr animated:YES]; 
    }
4

5 に答える 5

47

次の行を置き換えます。

[[self navigationController] setToolbarItems:arr animated:YES];

これとともに:

[self setToolbarItems:arr animated:YES];

一般にtoolbarItems、UINavigationController 自体ではなく、プッシュする個々のビュー コントローラーで設定する必要があります。

于 2010-03-19T07:42:47.813 に答える
14

Appleのドキュメントに、UIToolBar を説明する小さな段落があることがわかりました。この段落には、「[..] 表示されると、このツールバーは、アクティブなビュー コントローラーの toolbarItems プロパティから現在のアイテム セットを取得します [..]」という非常に短い文がありますが、最初にそのビューについて説明していません。これらのボタンを取得するには、アクティブにする必要があります。これは、UIToolBar が viewDidAppear メッセージではなく、viewDidLoad メッセージでそのボタンを取得する準備ができていることを意味します。

- (void)viewDidAppear:(BOOL)animated {
    [[self tableView] reloadData];

    [[self navigationController] setToolbarHidden: NO animated:YES];    
    UIBarButtonItem * logoutButton = [[[UIBarButtonItem alloc] initWithTitle:@"Log out" style:UIBarButtonItemStylePlain target:self action:@selector(logOut:)]autorelease];
    NSMutableArray * arr = [NSMutableArray arrayWithObjects:logoutButton, nil];
    [self setToolbarItems:arr animated:YES];

    [super viewDidAppear:animated];
}
于 2010-03-19T10:00:20.640 に答える
0

UITableViewController のサブクラスであるビュー コントローラーを作成し、次のようにしてツールバーを機能させました。

ビューでDidLoad:

self.navigationController.toolbar.barStyle = UIBarStyleBlackTranslucent;

NSArray* toolbarItems = [NSArray arrayWithObjects: button1,
                                                   button2,
                                                   button3,
                                                   nil];

[self setToolbarItems:toolbarItems animated:NO];

次に、この画面にのみツールバーが必要なので、これを viewWillAppear に追加しました。

[self.navigationController setToolbarHidden:NO animated:YES];

最後に、viewWillDisappear で再びツールバーを非表示にします。

[self.navigationController setToolbarHidden:YES animated:YES];

これは、アイコンとカスタムアイコンに組み込まれた「テキスト」ボタンで機能します。

于 2010-06-12T05:09:48.230 に答える
0

http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UINavigationController_Class/Reference/Reference.html

「ナビゲーション コントローラ オブジェクトは、そのビュー階層でオプションのツールバーを管理するようになりました。表示されると、このツールバーは、アクティブなビュー コントローラの toolbarItems プロパティから現在の項目のセットを取得します。」

テーブルビューの UITableViewController をサブクラス化し、適切な toolbarItems プロパティを設定してみましたか?

于 2010-03-19T07:13:31.070 に答える
0

これを回避するためにインターフェースビルダーを使用できるかもしれませんが、遅くなります

于 2010-03-19T06:29:24.530 に答える