0

私はいくつかのturorialを見てきましたが、次のビューに情報を渡す場合、すべて1行以上のコードで新しいビューを呼び出します。現時点では、次のようなセグエを使用してメニューを作成したいと考えています。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {          
    NSIndexPath *path = [self.tableView indexPathForSelectedRow]; 
    if ([path row]==0) {
        MainViewController *mtvc = (MainViewController *)[segue destinationViewController];
    } else {
        SettingsViewController *svc = [segue destinationViewController];
    }       
}

通常、すべての例は "segue.identifier isEqualToString:@"" " を使用します。しかし、ストーリーボード内のテーブル ビューのセルを他の複数のビューに接続できませんでした。したがって、選択した行を使用して、どのビューをセグエにするかを識別しました。

これが問題を引き起こす可能性があるかどうかはわかりませんが、次の方法でスプラッシュビューからテーブルビューを初期化しました:

-(void)turnNext {
    UIStoryboard *storyboard = self.storyboard;
    MenuTableViewController *mtvc = [storyboard instantiateViewControllerWithIdentifier:@"Menu"];
    [self presentViewController: mtvc animated:YES completion:nil];
}
4

2 に答える 2

1
-(void)turnNext {
    UIStoryboard *storyboard = self.storyboard;
    MenuTableViewController *mtvc = [storyboard instantiateViewControllerWithIdentifier:@"Menu"];

    [self presentViewController: mtvc animated:YES completion:nil];
}
             ^^^^^^

それをに変更します

[self.navigationController pushViewController:mtvc animated:YES];
于 2012-05-13T20:55:57.537 に答える
1

この目的にはセグエを使用する必要があります。

  • ストーリーボードのソース コントローラーに 2 つのカスタム セグエを作成します。
  • それらの識別子を「segueToMainViewController」および「segueToSettingsViewController」として設定します

さて、tableView では、'didselectrowAtIndexPath' メソッドは以下を使用します。

//use your logic here

if(indexPath.row == 1) {
   [self performSegueWithIdentifier:@"segueToMainViewController" sender:nil];
}
else {
   [self performSegueWithIdentifier:@"segueToSettingsViewController" sender:nil]
}

コントローラーに何かを渡す必要がある場合は、送信者としてデータを渡すことができます。

于 2016-12-20T09:57:16.857 に答える