0

セグエを実行しようとすると、このエラーが発生します...

2012-11-14 20:24:54.133 MyApp[26266:c07] nested push animation can result in corrupted navigation bar
2012-11-14 20:24:54.486 MyApp[26266:c07] Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted.
2012-11-14 20:24:54.487 MyApp[26266:c07] Unbalanced calls to begin/end appearance transitions for <SheetDrillDownViewController: 0xa1bb980>.

ここに私のセットアップがあります: 最初のビュー --> 次のビュー (UITableView) --> 最後のビュー (UITable)

各セルは、最後のビューまで別のビューにプッシュされます。私はモーダル セグエを持っていません。セグエを二重に呼び出していると人々が言っ​​ているので、そのメソッドを削除しようとしましたが、クリックするとセルが青くなり、どこにもプッシュされません...どうすればこのエラーを修正できますか? ありがとう。

これが私のコードです:

    -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    if (indexPath) {
    [self performSegueWithIdentifier:@"subjectDrillDown" sender:nil];
    }
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    NSLog(@"Attempting to identify segue...");
    // Make sure we're referring to the correct segue
    if ([[segue identifier] isEqualToString:@"subjectDrillDown"]) {

        NSLog(@"Segue has been identified...");
        // Get reference to the destination view controller
        SubjectDrillDownViewController *vc = [segue destinationViewController];
        NSInteger selectedIndex = [[self.tableView indexPathForSelectedRow] row]; 
        NSMutableDictionary *object = [tableDataSource objectAtIndex:selectedIndex];
        NSString *key = [object valueForKey:@"key"];
        [vc setSelectedItem:key];

        NSLog(@"Switching to %@ detail view...",key);
        NSLog(@"Passing dictionary to %@ view... (Source below)\n\n %@",key,[NSString stringWithFormat:@"%@", [tableDataSource objectAtIndex:selectedIndex]]);
        [vc setDetailDataSourceDict:[tableDataSource objectAtIndex:selectedIndex]];
    }
    else {
        NSLog(@"ERROR, DOUBLE CHECK SEGUE'S NAME!");
    }
}

他のすべての Stack Overflow の質問を見てきましたが、ほとんどの正解はうまくいきません...


編集:

次のビューはロードできますが、戻るボタンをクリックすると、突然さらに 2 つのビューが表示されます...


アップデート:

ここに画像の説明を入力

セグエを識別しようとしている回数を投稿しようとします... NSLogs、しかし私のコンパイラは突然実行されません:(

4

1 に答える 1

2

didSelectRowAtIndexPathセル->次のビューのようにすでに設定している場合は、でセグエを実行する必要はありません。

ただし、そこから呼び出しを削除しても機能しません。ビューコントローラからセグエを試して(Ctrl +ビュー領域からドラッグ)、次のビューに移動して、セグエ呼び出しを続行できます。didSelectRowAtIndexPath


私はいつも次のいずれかの方法を使用します

方法1:

セグエUITableViewCellからNext View Controller

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    // Nothing
}

方法2:

セグエMain View ControllerからNext View Controller

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [self performSegueWithIdentifier:@"subjectDrillDown" sender:nil];
}

あなたが得ているエラーは、あなたがセグエを持っていて、選択されたときに手動でセグエを実行するためです-したがって、それはネストされたプッシュアニメーションになります

セグエの名前が正しく、上記の方法の1つだけを使用していることを確認してください

于 2012-11-15T02:31:09.183 に答える