1

次のセットアップでは、Button 1呼び出しFirst VCButton 2呼び出しSecond VC

ここに画像の説明を入力

現在、次のコードを使用して、 をSecondVCタップして呼び出しますButton 2

MainVC.m

@implementation MainVC()
....

UINavigationController *navController = [self.childViewControllers objectAtIndex:0];
SecondVC *secondVC = [self.storyboard instantiateViewControllerWithIdentifier:@"second"];
[navController pushViewController:secondVC animated:YES];

上記のコードは問題なく表示されますSecondVC。ただし、First VC「Second VC」が表示される前に実行する必要があるステートメントがスキップされています。

これらのステートメントをFirst VCinsideで実行します-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender。でNextButton がタップされるとFirst VC、すべてのステートメントが実行されます。これは、prepareForSegueを表示する前にトリガーされるためSecondVCです。上記のコードを使用する場合、この手順はスキップされます。

追加情報:
A)が、Navigation ControllerMain VCのアプリでは、アプリにナビゲーション バーが表示されません。これは、iPhone に 2 つのナビゲーション バーを表示することは HIG に反すると思います。メイン VC を特定するためにここに表示します。
B)ユーザーが入力する FirstVC の textFields があります。コードをコピーするだけで、textFields.text からデータを読み取って保存できますか?

質問:がタップされているときに、どうすれば電話prepareForSegueをかけることができますか? またはこれに対する別のアプローチはありますか? First VCButton 2MainVC

4

1 に答える 1

0

次のようなことを試すことができます。

UINavigationController *navController = [[self childViewControllers] objectAtIndex:0];
UIViewController *vc = [navController topViewController]
if ([vc isKindOfClass:[FirstVC class]]) {
    FirstVC *firstVC = (FirstVC *)vc;
    SecondVC *secondVC = [[self storyboard] instantiateViewControllerWithIdentifier:@"second"];
    // Copy and read data from [[firstVC textField] text] to secondVC.
    [navController pushViewController:secondVC animated:YES];
}
于 2013-10-22T04:00:45.340 に答える