12

uinavigationbarに情報ボタン(円で囲まれた文字「i」)があるアプリケーションの多くを見てきました。このタイプのボタンを追加するにはどうすればよいですか?

4

4 に答える 4

31

前の回答は近いもので、完全にはコンパイルされませんでした。これがあなたが本当に欲しいものです:

// Info button
UIButton* infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight]; 
[infoButton addTarget:self action:@selector(showInfoView:) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:infoButton];
于 2009-09-22T17:05:46.113 に答える
3

上記の回答にはメモリリークがあります。これを回避するには、「autorelease」を使用する必要があります。回答を編集しようとしましたが、これまでのところ成功していません。

// Info button
UIButton* infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight]; 
[infoButton addTarget:self action:@selector(showInfoView:) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:infoButton] autorelease];

これが正しい方法です。

于 2011-12-03T10:40:01.797 に答える
0

UINavigationController が現在表示しているビュー コントローラの navigationItem に「Info Light」タイプのボタンを追加できるはずです。次のようなものがView Controllerコードに入る可能性があります:

- (void) viewDidLoad {
  UIButton * info = [UIButton buttonWithType:UIButtonTypeInfoLight];
  // set your button's target and selector for whatever action here.
  self.navigationItem.rightBarButtonItem.customView = info;
}
于 2009-09-21T18:58:48.180 に答える