0

NSIndexPathを新しいビューに渡すのに本当に問題があります。アプリの仕組みは次のとおりです。

nab brにUIBarButtonItemがあり、それをタップするとポップオーバービューが表示されます。これにはたくさんのものが表示されます。メインビューからこのポップオーバービューへのNSIndexPathを取得する必要があります。

ポップオーバービュークラスにNSIndexPathのプロパティがあり、ポップオーバートランジションがストーリーボードに接続されています。

次に、ビュー間でインデックスパスを渡すための次のコードがあります。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"statsPopover"])
    {
        StatsViewController *statsVC = [segue destinationViewController];

        statsVC.selectedIndex = stageSelectionTable.indexPathForSelectedRow;
    }
}

ただし、これが呼び出されている間、インデックスパスは実際にはビュー間で送信されません。ポップオーバーのインデックスパスは常にデフォルトの0,0行とセクションです。

4

1 に答える 1

0

デバッグ/ロギングから、メソッドが実行され、ifステートメントがトリガーされ、stageSelectionTable.indexPathForSelectedRow期待する値を持っていることがわかっていると言います。

そのような診断を行うことで、問題を解決するための正しい道を歩むことができます。それを維持してください-またはデバッガーで他のことをテストするとNSLog、問題を見つけることができるはずです。

  • あなたはそれstatsVCが非であることを知っていますnilか?の場合nil、設定するメッセージselectedIndexは何もしません。

  • statsVCあなたが期待するクラスですか?たとえば、ポップオーバーの(テーブル?)ビューがナビゲーションコントローラーに埋め込まれている場合、ナビゲーションコントローラーsegue.destinationViewControllerを指します。その子ビューコントローラー配列を調べて、探しているものを見つける必要があります。

  • StatsViewControllerクラスがそのselectedIndexプロパティに使用しているアクセサメソッドは正しく機能していますか?(これは、強力な/保持プロパティの合成アクセサーである場合は問題になりません。)

  • あなたのStatsViewControllerクラスでは、selectedIndex実際に設定される前に作業しようとしていますか?プロパティをに設定してprepareForSegue:sender:から使用することはviewDidLoad問題なく機能するはずですが、で使用することはawakeFromNibできない場合があり、init...メソッドで使用することは間違いなく機能しません。

于 2012-06-07T15:34:24.423 に答える