0

iOSのネイティブ設定アプリと同じように、設定ページを使用してアプリを作成しようとしています。ただし、左向きのUIBarButtonを作成する方法がわかりません。基本的に、ナビゲーションバーの上部にある、関数を呼び出すように設定できる左向きのボタンが必要です。これが役立つ場合、私はエンジンcocos2dを使用しています。私はプログラムでアプリ全体を作成しています。

これがUINavigationBarを作成するための私のコードです...

UINavigationBar *naviBarObj = [[[UINavigationBar alloc] initWithFrame:CGRectMake(0, 20, 320, 44)] autorelease];
[[[CCDirector sharedDirector] openGLView] addSubview:naviBarObj];
[naviBarObj release];
UINavigationItem *item = [[[UINavigationItem alloc] initWithTitle:@"Title"] autorelease];
UIBarButtonItem *back = [[[UIBarButtonItem alloc] initWithTitle:@"Back"
                                                         style:UIBarButtonItemStyleBordered
                                                        target:self
                                                        action:@selector(back)] autorelease];
item.leftBarButtonItem = back;
[naviBarObj setItems:[NSArray arrayWithObjects:item, nil] animated:YES];

これは正方形の戻るボタンを作成しますが。

私の目標はこのようなものを作成することです

左向きボタン

UINavigationItemを知っています

UINavigationItem *back2 = [[[UINavigationItem alloc] initWithTitle:@"Settings"] autorelease];

[naviBarObj setItems:[NSArray arrayWithObjects:back,item, nil] animated:YES];

その効果を作成しますが、残念ながら私は現在UINavigationControllerクラスを使用していません。これはすべてCCLayerで行われます。

ありがとうございました!!

4

1 に答える 1

2

1 つの方法は、カスタムの背面イメージを使用することですが、それはちょっと面倒です。

別の方法は、最後の部分で述べたのとまったく同じように、戻るボタンに表示するテキストに設定されたタイトルで別の「ダミー」の前のナビゲーション項目を作成し、両方の項目を UINavigationBar に追加することです。

UINavigationItem *item = [[[UINavigationItem alloc] initWithTitle:@"Title"] autorelease];    
UINavigationItem *back2 = [[[UINavigationItem alloc] initWithTitle:@"Settings"] autorelease];

[naviBarObj setItems:[NSArray arrayWithObjects:back2,item, nil] animated:YES];

ただし、これらが発生するために UINavigationController が必要になるとは思いません。戻るボタン イベントを処理するために、CCLayer を UINavigationBar のデリゲートにすることができると思います。UINavigationBarDelegate:

@interface MyLayer : CCLayer <UINavigationBarDelegate> {
}

次に、 UINavigationBar のデリゲートをそのレイヤーに設定します。

naviBarObj.delegate = self;

最後に didPopItem を実装して、ボタンがクリックされたときにイベントの通知を受け取ります。

- (void) navigationBar:(UINavigationBar *)navigationBar didPopItem:(UINavigationItem *)item
{
    [self back]; // or whatever 
}

これがうまくいくかどうか教えてください。

于 2012-12-01T11:41:26.013 に答える