2012-04-07 6 views
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; 
} 

}

:私はUIBarButtonItemのアクションを追加しました。 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]; 
} 

答えて

0

コードは正しいです。送信者をself.navigationItem.leftBarButtonItemまたはself.navigationItem.rightBarButtonItemに置き換えてください。送信者はあなたが期待しているものではないかもしれません。

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

+0

トグル(編集モード/完了ボタン)に_modeを使用しています。私はnavコントローラを持っていない、すべてのUIBarButtonItemsはツールバーに敷設されています。送信者は私がInterface Builderでリンクしたものです – NeverBe

+0

ツールバーでUIPopoverArrowDirectionDownを使用する必要がある場合 – railwayparade

+0

私は既に試してみましたが、何もしませんでした。 – NeverBe

2

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

+0

はい、私はARCとpopoverプロパティが強いです。そして、私はコードが当たっていると確信しています。 – NeverBe

0

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

+0

はい、私はそれをしました。 VCは適切なインスタンスを持っています – NeverBe

+0

バーボタンを作成するコードを表示できますか? –

+0

質問を更新しました – NeverBe

関連する問題