次のコードを使用して、UITabButtonItemをViewControllerに追加しました。画像を関連付けることが可能かどうか誰か教えてもらえますか?
UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(favouriteButtonClicked:)];
viewController2.navigationItem.rightBarButtonItem = button;
[button release];
[self.navigationController pushViewController:viewController2 animated:YES];
他の場所で次のコードを使用していますが、上記のコードのように、viewcontrollerを現在のビューにプッシュしているため、このコードは機能しません。上記のコードを使用する必要がありました。
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setImage:[UIImage imageNamed:@"unselected.png"] forState:UIControlStateNormal];
[button addTarget:self action:@selector(favouriteButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
[button setFrame:CGRectMake(280, 25, 30, 30)];
viewController2.navigationController.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:button] autorelease];
[self.navigationController pushViewController:viewController2 animated:YES];
何が問題なのかわかりませんが、このカスタムボタンコードをinitWithBarButtonSystemItemに置き換えると、正常に機能します!!!
最後に、この問題を整理して、ここに機能するコードを投稿しましたが、baseviewcontrollerにボタンがあるかどうかがわかりません。次のように追加すると、機能しません!!!受け入れた回答に記載されているコードを使用する必要がありました。
[favButton addTarget:self action:@selector(favouriteButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:button] autorelease];
次のコードはまだ機能しません!!!何が起こっているのかわからない。
MPMoviePlayerViewController *videoController = [[[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL URLWithString:filePath]] autorelease];
UIButton* favouritebutton = [UIButton buttonWithType:UIButtonTypeCustom];
[favouritebutton setBackgroundImage:[UIImage imageNamed:@"unselected.png"] forState:UIControlStateNormal];
[favouritebutton addTarget:self action:@selector(favouriteButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
[favouritebutton setFrame:CGRectMake(280, 25, 30, 30)];
videoController.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:favouritebutton] autorelease];
[self presentMoviePlayerViewControllerAnimated:videoController];
ありがとう。
UIButton *favButton = [[UIButton alloc] init];
[favButton setImage:[UIImage imageNamed:@"unselected.png"] forState:UIControlStateNormal];
[favButton addTarget:self action:@selector(favouriteButtonClicked:)
forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *button = [[UIBarButtonItem alloc]
initWithCustomView:favButton];
self.navigationItem.rightBarButtonItem = button;
[button release];
[favButton release];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal];
[button addTarget:self action:@selector(methodAction:) forControlEvents:UIControlEventTouchUpInside];
[button setFrame:CGRectMake(0, 0, 49, 30)];
navController.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:button] autorelease];
それをナビゲーションコントローラーに割り当て、上記のコードで説明されているように画像を設定することもできます。
大丈夫。ついに私はこれを解決しました。マギーとプラビーン、ありがとう。次のコードだけが正しく機能します。あなたの両方の答えからのビット:)
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setImage:[UIImage imageNamed:@"unselected.png"] forState:UIControlStateNormal];
[button addTarget:self action:@selector(favouriteButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
[button setFrame:CGRectMake(280, 25, 30, 30)];
self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:button] autorelease];
ありがとう。
Maggie's Swiftに適用される優れたソリューション:
let favButton = UIButton()
favButton.setImage(UIImage(named: "unselected"), forState: .Normal)
favButton.addTarget(self, action: "favouriteButtonClicked:", forControlEvents: .TouchUpInside)
self.navigationItem.rightBarButtonItem = UIBarButtonItem(customView: favButton)
ツールバーにroundrectボタンを配置し、そのroundrectボタンの画像を変更して、ボタンをカスタムタイプに設定することにより、XIBから直接設定することもできます。また、ボタンの背景をクリアカラーにします
マギーの答えを利用するSwiftの関数は次のとおりです。
class func returnBarButtonItemWithImage(theImageName:String, andDownImage theDownImageName:String, andSize theSize:CGFloat, withAction theAction:Selector, andTarget theTarget:AnyObject)->UIBarButtonItem? {
if let myImage = UIImage(named:theImageName) {
var myButton = UIButton(frame: CGRectMake(0, 0, theSize, theSize))
myButton.setImage(myImage, forState: UIControlState.Normal)
myButton.addTarget(theTarget, action: theAction, forControlEvents: UIControlEvents.TouchUpInside)
if let myDownImage = UIImage(named: theDownImageName) {
myButton.setImage(myDownImage, forState: UIControlState.Selected)
}
return UIBarButtonItem(customView: myButton)
}
return nil
}
UIButton * button = [[UIButton alloc] init];
[button setImage:[UIImage imageNamed:@"settings"] forState:UIControlStateNormal];
[button addTarget:self action:@selector(RightBarMethod:)
forControlEvents:UIControlEventTouchUpInside];
[button setFrame:CGRectMake(0, 0, 20, 20)];
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc]
initWithCustomView:button];
self.navigationItem.rightBarButtonItem = barButtonItem;