1

上部のナビゲーションにある 3 つのボタンを呼び出すようなアプリを作成しています。バー。タブには項目が 1 つしかないため、タブ バーは使用したくありません。

以下のコードでは、左ボタン (編集) が正常に機能します。右ボタン - カードへのリンクも正常に機能します。ただし、愚かな [追加] ボタンを押すと、セレクター (insertNewObject) が見つからないというエラーが表示されます。

カスタムコードを取り出して、「ピンチで動作する」というコードを使用すると、うまく動作します。

私が間違っていることを知っているか、別の方法で当面の問題を処理するか、アプリの別の部分にリンクしていただければ幸いです。

ティア。

  /*
    //  THIS WORKS IN A PINCH
    // Set up the edit and add buttons.
    self.navigationItem.leftBarButtonItem = self.editButtonItem;

    UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(insertNewObject)];
    self.navigationItem.rightBarButtonItem = addButton;
    [addButton release];

   //  END OF WHAT WORKS
*/
    // create a toolbar to have two buttons in the right
    UIToolbar* tools = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 105, 44.01)];

    self.navigationItem.leftBarButtonItem = self.editButtonItem;

    // create the array to hold the buttons, which then gets added to the toolbar
    NSMutableArray* buttons = [[NSMutableArray alloc] initWithCapacity:3];

    UIBarButtonItem* addButton = [[UIBarButtonItem alloc]
                           initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(insertNewObject)];
    addButton.style = UIBarButtonItemStyleBordered;
    [buttons addObject:addButton];
    [addButton release];

    // create a standard "add" button


    // create a flip button
    UIBarButtonItem* flipButton = [[UIBarButtonItem alloc]
          initWithTitle:@"Cards" style:UIBarButtonItemStyleBordered
          target:self action:@selector(flipToFront)]; 
    [buttons addObject:flipButton];
    [flipButton release];


    // stick the buttons in the toolbar
    [tools setItems:buttons animated:NO];

    [buttons release];

    // and put the toolbar in the nav bar

    UIBarButtonItem* rightButtonBar = [[UIBarButtonItem alloc] initWithCustomView:tools];
    self.navigationItem.rightBarButtonItem = rightButtonBar;
    [rightButtonBar release];
4

1 に答える 1

2

セレクター名の後にコロンがない可能性があります。@selector(newObject) を入れるだけで、パラメータのないメソッドへの参照だと思います。@selector(newObject:) が代わりに機能する場合があります。

于 2012-03-24T14:04:58.517 に答える