0

カスタム イメージのバーボタンを作成したかったので、サブクラス UIBarButtonItem を作成しました。

    @implementation UIBar

+ (UIBarButtonItem*)barItemWithImage:(UIImage*)image target:(id)target action:(SEL)action{

    UIImage *menuButtonImage = [UIImage imageNamed:@"Camera.jpg"];
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    [button setImage:menuButtonImage forState:UIControlStateNormal];
    button.frame = CGRectMake(0, 0, menuButtonImage.size.width, menuButtonImage.size.height);
    UIBarButtonItem *menuButton = [[UIBarButtonItem alloc] initWithCustomView:button];
    [button addTarget:self action:@selector(takePicture) forControlEvents:UIControlEventTouchUpInside];


  //  self->navigationItem.rightBarButtonItem = menuButton;

    [UIViewController release];
}

しかし、私が行に出ているエラー:

 self.navigationItem.rightBarButtonItem = button;

構造体 objc_class 型の定義が不完全です

このエラーは、クラスが適切に初期化されていないことと関係がありますか? 私はObjective-Cが初めてです。

ご協力いただきありがとうございます。

4

2 に答える 2

0

カテゴリ メソッドでは、UIBarButtonItem インスタンスを返していません。menuButton を返してみてください。

また、UIViewController のクラス メソッドを呼び出す必要がある理由がわかりません。メソッドは、たとえば、クラス メソッドではありません。その行も削除します。

+ (UIBarButtonItem*)barItemWithImage:(UIImage*)image target:(id)target action:(SEL)action{

    UIImage *menuButtonImage = [UIImage imageNamed:@"Camera.jpg"];
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    [button setImage:menuButtonImage forState:UIControlStateNormal];
    button.frame = CGRectMake(0, 0, menuButtonImage.size.width, menuButtonImage.size.height);
    UIBarButtonItem *menuButton = [[UIBarButtonItem alloc] initWithCustomView:button];
    [button addTarget:self action:@selector(takePicture) forControlEvents:UIControlEventTouchUpInside];
    return menuButton; 
}
于 2013-06-06T08:54:55.833 に答える