0

UIBarButtonItem でこのカテゴリ メソッドを使用して、次のようにカスタム ボタンを作成します。

+ (UIBarButtonItem*)itemWithImage:(UIImage*)image forState:(UIControlState)controlState target:(id)target action:(SEL)action{

    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    [button setImage:image forState:controlState];

    button.frame= CGRectMake(0.0, 0.0, 44, 44);
    [button addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];

    UIView *v=[[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 44, 44) ];
    [v addSubview:button];

    return [[UIBarButtonItem alloc] initWithCustomView:button];
}

次に、ボタンを作成し、次のようにビュー コントローラーのナビゲーション アイテムに割り当てます。

-(void)viewDidLoad{
    [super viewDidLoad]; 
    UIBarButtonItem * cancelButtonItem = [UIBarButtonItem itemWithImage:[UIImage imageNamed:@"Cancel"] forState:UIControlStateNormal target:self action:@selector(cancel)];
    self.navigationItem.leftBarButtonItem = cancelButtonItem;

    UIBarButtonItem * checkmarkButtonItem = [UIBarButtonItem itemWithImage:[UIImage imageNamed:@"checkmark_active"] forState:UIControlStateNormal target:self action:@selector(done)];
    self.navigationItem.rightBarButtonItem = checkmarkButtonItem;
}

初めてView Controllerを作成してプッシュすると、ボタンは機能しますが、新しいView Controllerを作成してナビゲーションスタックにプッシュすると、ボタンが壊れます。何か案は?私はこれを徹底的にデバッグしましたが、アイデアがありません。

4

1 に答える 1

1

コードのカテゴリ セクションに問題はないようです。エラーは他の何かに起因する可能性があると思われます。ここでさらに情報やコードが役立つかもしれません...ブレークなどとはどういう意味ですか.ViewControllerをスタックにプッシュする前に、ViewControllerを初期化する方法を確認してください。おそらく、単純な構文エラーか、コンセントを使用している場合のnib名の誤りです。

于 2013-05-30T02:36:25.010 に答える