2

タブバーを持たないViewControllerでは動作しますが、タブバーでは動作しません。また、これはストーリー ボードの最初のビュー コントローラーです。

UIImage *bookmarkImage = [UIImage imageNamed:@"bookmark"];

//create the button and assign the image
UIButton *bookmarkButton = [UIButton buttonWithType:UIButtonTypeCustom];

 //set the frame of the button to the size of the image (see note below)
bookmarkButton.frame = CGRectMake(100, 0, bookmarkImage.size.width,      bookmarkImage.size.height);
        [bookmarkButton setImage:bookmarkImage forState:UIControlStateNormal];

bookmarkButton addTarget:self action:@selector(addFavorite:) forControlEvents:UIControlEventTouchUpInside];
bookmarkButton.imageView.contentMode=UIViewContentModeScaleAspectFit;

//create a UIBarButtonItem with the button as a custom view
UIBarButtonItem *customBarItem2 = [[UIBarButtonItem alloc] initWithCustomView:bookmarkButton];
self.navigationItem.rightBarButtonItem = customBarItem2;
4

2 に答える 2

1

あなたの質問を理解するのに少し問題がありましたが、私が収集できるように、ボタンを追加しようとしているクラスがUINavigationController.

このクラス (ClassX) をインスタンス化する方法はわかりませんが、次のようにする必要があります。

ClassX *temp = [[ClassX alloc] init....];

UINavigationController *control = [[UINavigationController alloc] initWithRootViewController:temp];

次に、コントロール ビューを表示します。

于 2012-07-27T21:36:49.343 に答える
0

第一印象、問題の原因は だと思いますが、UIButton *bookmarkButton = [UIButton buttonWithType:UIButtonTypeCustom];よくわかりません。必要に応じて、このように変更できます。それは機能します。

- (void)viewDidLoad
{
    [super viewDidLoad];
    navigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
    UINavigationItem *navigationItem = [[[UINavigationItem alloc] initWithTitle:@"My NavigationBar"] autorelease];

    UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(100, 0, 70, 30)];

    [button setImage:[UIImage imageNamed:@"bookmark.png"] forState:UIControlStateNormal];
    [button addTarget:self action:@selector(buttonClicked)
     forControlEvents:UIControlEventTouchUpInside];

    UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc]
                                   initWithCustomView:button];

    navigationItem.rightBarButtonItem = buttonItem;
    [navigationBar pushNavigationItem:navigationItem animated:NO];
    [self.view addSubview:navigationBar];

    [buttonItem release];
    [button release];
}
于 2012-07-27T22:49:00.430 に答える