15

私はこのアプローチ/ハックを試しました:http: //blog.blackwhale.at/2009/06/uibuttons-in-uinavigationbar/

問題は、これがかすかな継ぎ目を残すことです。ネストされたツールバーの背景画像を、キャプチャした画像に設定してみました。それはうまくいきませんでした。画像は適用されませんでした。ネストされたUINavigationBarを使用しようとしましたが、機能しなかったようです。

私はこれがいくつかのiPhoneアプリで行われているのを見てきました。誰かが方法を知っていますか?

[編集]ボタンを通常のUIBarButtonItemsのように見せ、UIBarButtonSystemItemAdd、UIBarButtonSystemItemRefreshなどのシステムスタイルを使用できるようにしたい。私が提供したリンクは、ナビゲーションバーにネストされたUIToolbarであるため、かすかな継ぎ目を見ることができることを除いて、これを行います。

これがヒューマンインターフェイスガイドラインに違反していることに言及しないでください。(私たちは知っています)。

ハックに貢献していただきありがとうございます...これを行う唯一の方法です!

4

8 に答える 8

36

iOS5.0は複数のボタンをサポートするようになりました。UINavigationItemについてはiOSのドキュメントを参照してください。具体的には、次のとおりです。

プロパティ:

@property(nonatomic, copy) NSArray *leftBarButtonItems;
@property(nonatomic, copy) NSArray *rightBarButtonItems;
@property BOOL leftItemsSupplementBackButton;

方法:

- (void)setLeftBarButtonItems:(NSArray *)items animated:(BOOL)animated;
- (void)setRightBarButtonItems:(NSArray *)items animated:(BOOL)animated;
于 2011-11-12T20:41:31.023 に答える
18

ナビゲーションバーの右側に2つのボタンを追加するコードを投稿しました。barStyle = -1サブクラス化の代わりに設定できますUIToolbar

于 2010-11-03T03:59:36.770 に答える
6

UIToolbarの背景(「継ぎ目」)を取り除くには、UIToolbarのサブクラスを作成し、(void)drawRect:(CGRect)rectメソッドをオーバーライドします。これを空白のままにすると、UIToolbarに背景がなくなります。

私自身のプロジェクトでこれを使用しただけで、うまくいきました。これは次のコメントで見つかりました:http://osmorphis.blogspot.com/2009/05/multiple-buttons-on-navigation-bar.html

于 2010-04-13T20:57:30.513 に答える
3
UIView *parentView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, myWidth, myHeight)];
// make UIView customView1... (UILabel, UIButton, etc.) with desired frame and settings
[parentView addSubview:customView1];
[customView1 release];
// make UIView customView2... (UILabel, UIButton, etc.) with desired frame and settings
[parentView addSubview:customView2];
[customView2 release];
UIBarButtonItem *customBarButtomItem = [[UIBarButtonItem alloc] initWithCustomView:parentView];
[parentView release];
self.navigationItem.rightBarButtonItem = customBarButtomItem;
[customBarButtomItem release];
于 2009-09-12T11:12:54.570 に答える
2

アップルのサイトで無料で入手できるuicatalogueの例を参照してください...彼らはナビゲーションバーの右バーボタンの代わりに3つのボタンを表示するためにuisegmentedコントロールを使用しました...

于 2009-09-12T07:45:11.513 に答える
1

コメントすることはできませんが、@ iworkinprogressに加えて、UIToolbarの背景色をクリアに設定する必要がありました。

    [toolbar setBackgroundColor:[UIColor clearColor]];

これは、 http://osmorphis.blogspot.com/2009/05/multiple-buttons-on-navigation-bar.htmlのコメントでも見つかりました。

于 2010-10-04T21:06:22.663 に答える
0

iOS 4.xでは、clearColorはUIToolbarに影響を与えないようですが、drawRect:をオーバーライドすると影響があります。

于 2010-11-02T11:42:31.393 に答える
0

プロジェクト全体で使用しているヘルパー関数を思いつきました。基本的に、バーにボタンがすでにあるかどうかをチェックし、新しいボタンを追加するか、既存のボタンとマージします。したがって、関数を1回だけまたは複数回呼び出すことができます。

+ (void)AddButtonToBar:(UIViewController *)controller withImage:(NSString *)imageName withAction:(SEL)action withFrame:(CGRect) frame{
    UIButton *newButton =[[UIButton alloc] init];
    [newButton setBackgroundImage:[UIImage imageNamed:imageName] forState:UIControlStateNormal];
    newButton.frame = frame;
    [newButton addTarget:controller action:action forControlEvents:UIControlEventTouchUpInside];

    if ([[controller.navigationItem rightBarButtonItems] count] == 0)
        [controller.navigationItem setRightBarButtonItem:[[UIBarButtonItem alloc] initWithCustomView:newButton]];
    else {
        NSMutableArray *existingButtons = [[NSMutableArray alloc] initWithArray:[controller.navigationItem rightBarButtonItems]];
        [existingButtons addObject:[[UIBarButtonItem alloc] initWithCustomView:newButton]];
        [controller.navigationItem setRightBarButtonItems:(NSArray *)existingButtons];
    }
}

ビューコントローラから呼び出します。

[Helper AddButtonToBar:self withImage:@"imageName.png" withAction:@selector(myAction) withFrame:CGRectMake(0, 0, 24, 24)];
于 2013-12-13T10:41:15.273 に答える