1

タブ バー コントローラーと、対応する詳細ビューを備えたテーブル ビュー コントローラーが必要でした。私はこれが初めてなので、Apple の SimpleDrillDown を組み合わせてみました: http://developer.apple.com/library/ios/#samplecode/SimpleDrillDown/Introduction/Intro.html

...ストーリーボードに関する Ray Wenderlich のチュートリアル: http://www.raywenderlich.com/5138/beginning-storyboards-in-ios-5-part-1

Ray's は、タブを設定して最初のテーブル ビューを取得する方法を示していますが、詳細ビューを取得する方法を示していません。そのため、Apple の SimpleDrillDown から詳細ビューを取得する方法を学ぼうとしました (タブバーコントローラーを持っています)。

プログラムはエラーなしで実行されますが、テーブル ビュー (FactSheetsViewController) の行をクリックすると、青色 (選択状態) のままで、FactSheetsDetailViewController に移動しません。このメソッドでテーブル ビュー クラスにブレークポイントを設定すると、次のようになります。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

    if ([[segue identifier] isEqualToString:@"DisplaySelectedFactSheet"]) {   
        NSIndexPath *selectedRowIndex = [self.tableView indexPathForSelectedRow];
        FactSheetsDetailViewController *detailViewController = [segue destinationViewController];
        detailViewController.factSheet = [dataController objectInListAtIndex:selectedRowIndex.row];     
    }
}

プログラムを実行してセルをクリックしても、ブレークポイントに到達しません。

何が間違っていたのかわからないため、他にどのコードを投稿すればよいかわかりません。AppDelegate で間違って初期化したのではないでしょうか?

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
    UINavigationController *navigationController = [[tabBarController viewControllers] objectAtIndex:0];   
    FactSheetsViewController *factSheetsViewController = [[navigationController viewControllers] objectAtIndex:0];   
    DataController *controller = [[DataController alloc] init];
    factSheetsViewController.dataController = controller;
    self.dataController = controller;

    return YES;
 }

または、どうにかしてストーリーボードで物事を正しく設定していない場合。属性インスペクターで、FactSheetsViewController から FactSheetsDetailView へのセグエへの識別子を "DisplaySelectedFactSheet" に設定しました。

詳細を掲載させていただきますので、お役に立てれば幸いです。お知らせください。ありがとうございました。

4

1 に答える 1