0

ストーリーボード内でテーブルビューコントローラーを使用しています。

現在、ストーリーボードのナビゲーション コントローラーに埋め込まれたテーブルビュー コントローラーが 1 つあります。このテーブル ビュー コントローラーは、ObjectiveC ファイルにリンクされています。

コードを介して、tableView didSelectRowAtIndexPath メソッドを使用して、正しいデータを含む別のテーブル ビュー コントローラーを表示できます。

コード:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    WorkoutType *workoutType = (WorkoutType *)[self.fetchedResultsController objectAtIndexPath:indexPath];
    WorkoutSetViewController *detailViewController = [[WorkoutSetViewController alloc] initWithWorkoutType:workoutType];

    [self.navigationController pushViewController:detailViewController animated:YES];

}

しかし、ストーリーボードに別のテーブル ビュー コントローラーを追加しようとすると、それを ObjectiveC ビュー コントローラー ファイルに関連付け、最初の TVC をそれに接続します。そのテーブル ビュー コントローラーは、コードの実行時に表示されません。

2番目のテーブルビューを視覚的にカスタマイズする必要があり、次のようにセグエプッシュを使用しようとしました:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"show"]) {



        NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];

        WorkoutType *workoutType = (WorkoutType *)[self.fetchedResultsController objectAtIndexPath:indexPath];
        //WorkoutSetViewController *detailViewController = [[WorkoutSetViewController alloc] initWithWorkoutType:workoutType];
        WorkoutSetViewController *destViewController = segue.destinationViewController;
        destViewController.workoutType = workoutType;
         //[self.navigationController pushViewController:detailViewController animated:YES];


    }
}

しかし、このコードを実行すると、アプリケーションはクラッシュしませんが、2 番目のテーブル ビュー コントローラーは読み込まれません。

私が間違っていることは何でも単純でなければなりません。

ありがとうございました

4

2 に答える 2

2

シンプル 以下のコードをナビゲートする必要があります。(同じストーリーボードViewControllerで作業する場合、ストーリーボードを設定する必要はありません)

(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath  
{  
    if(indexpath.row==0)//for first row click  
    {  
         WorkoutSetViewController *objWorkoutSetVC=[[WorkoutSetViewController alloc] i  nitWithNibName:@"WorkoutSetViewController" bundle:nil];  
        [self.navigationController pushViewController:objWorkoutSetVC animated:YES];  
    }  
    else if(indexpath.row==1)//for second row click  
    {  
        //Put code in which screen you have to navigate  
    }  
}  
于 2015-10-13T12:43:24.160 に答える
0

新しいView Controllerを割り当てないでください。代わりに次のコードを使用してください。

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
WorkoutSetViewController *detailViewController = (WorkoutSetViewController *)[storyboard instantiateViewControllerWithIdentifier:@"coolID"];
[self.navigationController pushViewController:detailViewController animated:YES];

MainStoryboardストーリーボード名を書き、ストーリーボードにcoolID設定したView Controller ID名を書きます。

于 2013-08-18T03:48:14.377 に答える