uitableviewcontrollerのsegueはプッシュとして機能しません。モーダルとしてのみ機能します

StackOverflow https://stackoverflow.com/questions/8814756

  •  26-10-2019
  •  | 
  •  

質問

私はこのビュースタックを持っています:

UIViewController --> (Modal segue) --> 
UITabBarController --> (relationship) --> 
UINavigationController --> (relationship) --> 
UITableViewController --> (segue) --> UIViewController

これがuitableviewcontrollerの私のセグエコードです:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@"selected row...");
    [self performSegueWithIdentifier:@"showVmail" sender:self];
    NSLog(@"done segue");
}

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"showVmail"]) {
        NSLog(@"Got segue request...");
        NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];

        [segue.destinationViewController setMyVmail: [self.vmails objectAtIndex:indexPath.row]];

    }
}

テーブルビューコントローラーのアイテムをクリックすると、これらのログメッセージが表示されます。

selected row...
Got segue request...
Setting myVmail... // from the new view controller
done segue

そして、それは私の新しいビューコントローラーに移動しません。モーダルに変更した場合は、機能しますが、もちろんバックボタンはありません。私が見る限り、私はすべてを正しく行いました。私は同じ問題でスタックオーバーフローに関する多くの応答を読み、それらの解決はuinavigationcontrollerに入れることです。 iveはすでにこれを行っています。

どんな考えも大歓迎です!

役に立ちましたか?

解決

私はあなたが簡単なケースに戻るべきであることを他に見た提案を試しました。ストーリーボードのuinavigationcontrollerを変更して、基本的なuiviewcontrollerを指してから、別のuiviewcontrollerに囲まれたボタンを作成しました。私がそれを実行したとき、私はまだ私のuitableviewcontrollerを手に入れました!

それは、私がuitabbarcontrollerのオブジェクトをプログラム的に記入していること、そしてuinavigationcontrollerを呼び出したのではなく、それをスキップしてuitableviewcontrollerを呼び出していることを思い出したときです。実際、私は本当に他のすべての人と同じ問題を抱えていましたが、UinavigationControllerがありませんでした!

私のプログラムを変更して、uitableviewcontrollerの代わりにuinavigationcontrollerをリンクし、すべてが予想どおりに機能しています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top