私は次のコードを取得しました:
- (id)init {
if (self = [super init]) {
self.title = @"please wait";
UIBarButtonItem *favorite = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"star.png"] style:UIBarButtonItemStylePlain target:self action:@selector(buttonFavoriteClicked:)];
self.navigationItem.rightBarButtonItem = favorite;
}
return self;
}
しかし、私のボタンはまだUIBarButtonItemStyleBorderedのボタンのように見えます
この位置にプレーンスタイルのボタンを設定する方法はありますか?
Interface BuilderでUIButtonを作成し、希望どおりの外観にします。 .hにinのアウトレットを作成します。
IBOutlet UIButton * _myButton;
次に、カスタムビューを使用して右バーボタンアイテムとして設定します。これにより、境界線が削除されます。
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:_myButton];
UIButtonはUIViewのサブクラスであるため、これは機能します。
代わりにこれを試してください:
- (id)init {
if (self = [super init]) {
self.title = @"please wait";
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 25, 25)];
[button setImage:[UIImage imageNamed:@"star.png"] forState:UIControlStateNormal];
[button addTarget:self action:@selector(buttonFavoriteClicked) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *favorite = [[UIBarButtonItem alloc] initWithCustomView:button];
[button release];
self.navigationItem.rightBarButtonItem = favorite;
}
return self;
}
それが役に立てば幸い。
または、IBのないコードでこれを行います。
// add setting button to nav bar
UIImage* settingsGearImg = [UIImage imageNamed:@"settings_gear.png"];
CGRect frameimg = CGRectMake(0, 0, settingsGearImg.size.width, settingsGearImg.size.height);
UIButton *settingsButton = [[UIButton alloc] initWithFrame:frameimg];
[settingsButton setBackgroundImage:settingsGearImg forState:UIControlStateNormal];
[settingsButton addTarget:self action:@selector(settingsButtonAction) forControlEvents:UIControlEventTouchUpInside];
[settingsButton setShowsTouchWhenHighlighted:YES];
UIBarButtonItem *settingButtonItem =[[UIBarButtonItem alloc] initWithCustomView:settingsButton];
self.navigationItem.leftBarButtonItem = settingButtonItem;
結果:
このアイコン画像を使用する場合(白い背景に白いのでここには表示されません-リンクは次のとおりです: http://i.stack.imgur.com/lk5SB.png ):
それは奇妙ですが、それは機能します。画像/アウトレットに「いいえ」と言ってください! UIBarButtonItemStylePlainプロパティを設定することすらすべきではありません。秘訣は、いくつかの特別な属性を使用してボタンをUIToolBarに配置することです。
UINavigationItem *item = [[UINavigationItem alloc] initWithTitle:@"Cool plain bar"];
UIToolbar *tools = [[UIToolbar alloc]
initWithFrame:CGRectMake(0.0f, 0.0f, 44.0f, 44.01f)];
tools.clipsToBounds = NO;
tools.barStyle = -1; // clear background
NSMutableArray *buttons = [[NSMutableArray alloc] initWithCapacity:1];
UIBarButtonItem *bi = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(refreshTableView)];
[buttons addObject:bi];
[tools setItems:buttons animated:NO];
UIBarButtonItem *rightButtons = [[UIBarButtonItem alloc] initWithCustomView:tools];
item.rightBarButtonItem = rightButtons;
item.hidesBackButton = YES;
[myCoolNavigationBar pushNavigationItem:item animated:NO];
フランクは正しいですが、このコードはviewDidLoad
にあるはずです。ここでの問題は、BarButtonsがどのように見えるかです。見た目を変えたい場合は、別のタイプのUIViewを使用する必要があります。 UIButtonをUIToolbarに問題なく追加できます。
-(void)viewDidLoad {
[super viewDidLoad];
self.title = @"please wait";
self.navigationItem.rightBarButtonItem = [[[UIButton alloc] init] autorelease];
}
編集:
申し訳ありませんが、プレーンなUIBarButtonItemが必要でした。 UINavigationBarでこれを実行できるとは思いません。 UserInteractionEnabled UILabelをrightBarButtonItemとして追加してみることができますが、機能するかどうかはわかりません。
これは現在不可能のようです。
sbwoodsideには解決策があります 。
UI7Kitを試してみませんか?私にとってはうまく機能し、使いやすいです。