4

プロジェクトのUIを開発するためにストーリーボードを使用しています。多くの問題が解決されましたが、この問題は私を殺しました。UIBarButtonItemのアクションを追加しました:

- (IBAction)pressAddActionButton:(UIBarButtonItem *)sender {
if (_mode == itemSelect) {

    LookUpTableViewController *vc =  [self.storyboard instantiateViewControllerWithIdentifier:@"lookupTable"];
    vc.key = @"title";
    vc.data = [Linesheet MR_findAllSortedBy:@"title" ascending:YES];
    vc.lookUpDelegate = self;

    self.myPopoverController = [[UIPopoverController alloc] initWithContentViewController:vc];
    [self.myPopoverController presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];      
} else {
    self.mode = itemSelect;
}

}

ポップオーバーを表示するためにstoryBoardsegueを使用している場合、すべて問題ありませんが、実行時にポップオーバーを表示しない場合は表示されません。UIBarButtonItemを手動で作成する必要があります。

手伝ってくれてありがとう!!!

更新、ボタンのコード:

- (void)setupNavigationItems {

    self.navigationController.navigationBarHidden = NO;

    UIBarButtonItem *addItem;
    if (_mode == itemSelect) {
        addItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd 
                                                                target:self 
                                                                action:@selector(pressAddActionButton:)];   
    } else {
        addItem = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleDone 
                                                  target:self 
                                                  action:@selector(pressDoneButton:)];
    }
    [addItem setStyle:UIBarButtonItemStyleBordered];

    UIBarButtonItem *separator = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace 
                                                                               target:self 
                                                                               action:nil];

    UIBarButtonItem *action = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction 
                                                                            target:self 
                                                                            action:@selector(pressActionButton:)];
    [action setStyle:UIBarButtonItemStyleBordered];

    [toolbar setItems:[NSArray arrayWithObjects:separator, addItem, action, nil] animated:YES];
}
4

3 に答える 3

2

行でブレークポイントを使用して、期待どおりにコードをヒットしていることを確認してくださいpresentPopoverFromBarButtonItem。また、arc を使用している場合は、myPopoverController プロパティが strong として宣言されていることを確認してください。そうしないと、表示行の前で nil になります。

于 2012-04-10T23:12:09.083 に答える
0

コードは正しいです。self.navigationItem.leftBarButtonItem送信者をまたはに置き換えてみてくださいself.navigationItem.rightBarButtonItem。送信者は、期待したものではない可能性があります。

また、テストのために if(_mode == itemSelect)句を削除します。 ivar _mode ivar に直接アクセスする必要がある理由がわかりません。

于 2012-04-10T22:59:13.370 に答える
0

LookUpTableViewController *vc実際に適切なインスタンスを取得するかどうかを確認しましたか? そうでない場合は、ストーリーボードが@"lookupTable"コントローラーの識別子として設定されていることを確認してください。

于 2012-04-16T03:44:38.817 に答える