web-dev-qa-db-ja.com

左ボタンをUINavigationBar(iPhone)に追加する

新しいナビゲーションベースのiPhoneアプリを作成しました。これをRootViewControllerに追加しました。

- (void)viewDidLoad {
    [super viewDidLoad];
    UIBarButtonItem *addButton = [[UIBarButtonItem alloc] init];
self.navigationItem.leftBarButtonItem = addButton;
self.navigationItem.leftBarButtonItem.enabled = YES;
}

ただし、左ボタンは表示されません。何かする必要がありますか?

27
4thSpace

ボタンが実際に何をするかは定義しません。これは私のアプリからの一行です:

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelEdit:)];

cancelEdit:、セレクターは現在のクラス(self)にあり、次のように定義されます。

- (void) cancelEdit: (id) sender;
54

ここにはリストされていませんが、実際には別の答えがありますが、多くの場合非常に役立ちます。 INavigationControllerを使用したくない の場合、self.navigationItemはオプションではありません。

UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"imageName"] style:UIBarButtonItemStyleBordered target:self action:@selector(action:)];
UINavigationItem *navigationItem = [[UINavigationItem alloc] initWithTitle:@"Bar Title"];
navigationItem.leftBarButtonItem = barButton;
[navigationBar pushNavigationItem:navigationItem animated:NO];

バーとボタンを備えた軽量のUIViewControllerを作成するときに、ナビゲーションのオーバーヘッドを避けたい場合があります。

14
Roman B.

この質問について:

ありがとうございます。利用できるさまざまなセレクターはどこにありますか?文書はこれについて非常に曖昧です。インスタンスメソッドを定義してセレクターとして配置しましたが、実行されませんでした。ボタンがクリックされたときに詳細ビューでスライドしたいのですが。 – 4thSpace 2月19日16:19

詳細情報が必要な場所に行き、エスケープ(Esc)キーを押します。したがって、この例では:

...(beginning of line)... @selector(Place Cursor Here, press Esc) ...

利用可能なセレクターのリストが表示されます。 Microsoftプログラマーにとっては、これはIntellisenseに似ていますが、Escで要求する必要があります(Visual Studioのように自動的に表示されないだけです)。実際には、XCodeは入力を開始したときに作成しようとしているもののほとんどを作成します。Tabキーが友達であることを理解すると、XCodeは本当に役立ちます。 (まあ...それは私の友達です...私が持っている孤独な人生を過ごしています)

ここで、独自のセレクタが必要な場合は、そこにラベルを配置できます(mySelector:など)。次に、コードのさらに下で、それをビルドします。

_- (IBAction)mySelector:(id)sender {
NSLog(@"You touched me THERE!");
}
_

また、ヘッダー(.h)ファイルには、対応するものを必ず入れてください。

-(IBAction) mySelector:(id)sender;

11
inked