1

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

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

そして、それは私の新しいView Controllerに移動しません。モーダルに変更すると動作しますが、もちろん戻るボタンはありません。私が見る限り、私はすべてを正しく行いました。同じ問題でスタック オーバーフローに関する多くの応答を読みましたが、それらの解決策は UINavigationController に入れることです。私はすでにこれをやった.

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

4

1 に答える 1

0

私はあなたが単純なケースに戻るべきであるという他の場所で見られる提案を試みました。ストーリーボードのUINavigationControllerを変更して、基本的なUIViewControllerをポイントし、別のUIViewControllerに接続するボタンを追加しました。それを実行したとき、私はまだUITableViewControllerを手に入れました!

そのとき、私はプログラムでUITabBarControllerにオブジェクトを入力していて、UINavigationControllerを呼び出していなかったのですが、それをスキップしてUITableViewControllerを呼び出していたことを思い出しました。だから実際、私は本当に他のみんなと同じ問題を抱えていて、UINavigationControllerがありませんでした!

プログラムを変更して、UITableViewControllerではなくUINavigationControllerをリンクすると、すべてが期待どおりに機能するようになります。

于 2012-01-11T23:05:34.650 に答える