2

私はiOSアプリの開発に不慣れで、複数の警告に問題があります。

テーブルビューをロードするナビゲーションコントローラーがあります。そのテーブルビューから、セルを1回タッチすると、新しいVC(基本的にはセルの詳細)がプッシュされます。そして、その「detailView」では、特定のボタンを押すと、別のVCが押されます。

次のコードで最後のVCをプッシュします。

- (IBAction)toMoreDetail:(id)sender 
{
    [self performSegueWithIdentifier:@"toMoreDetail" sender:self];
}

そして、私がそれをするとき、2つの警告が飛び出します:

2012-08-05 02:25:41.842 appName[2145:f803] nested push animation can result in corrupted navigation bar
2012-08-05 02:25:42.197 appName[2145:f803] Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted.

今のところ良い答えは見つかりませんでした。多分誰でもこの問題で私を助けることができます。

ありがとう :)

編集:ここに他のセグエのコードがあります:

TableListから詳細のVCへ(セグエはプロトタイプセルから始まり、詳細vcに進みます):

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"toDetailEvent"])
    {
        NSInteger selectedIndex = [[self.tableView indexPathForSelectedRow] row];
        DetailEvent* detailEvent = [segue destinationViewController];
        detailEvent.eventToDisplay = [listEvents objectAtIndex:selectedIndex];
    }
} 
4

2 に答える 2

17

私の推測では、ボタンはセグエにリンクされているので、ボタンを追加するIBActionと、セグエが2回トリガーされます。

ストーリーボードに移動してセグエをクリックすると、その出発地と目的地を確認できるはずです。その起源はビューコントローラ全体ですか、それともボタンだけですか?performSegue原点がViewController全体である場合にのみ、手動で行う必要があります。コメントアウトして、[self performSegueWithIdentifier:@"toMoreDetail" sender:self];機能するかどうかを確認できますか?

于 2012-08-05T04:14:45.083 に答える
1

ストーリーボードを使用し、ソースvcから宛先vcにセグエを接続し、didSelectRowを使用してセグエを呼び出す場合、セグエの選択にelseステートメントを残すことはできないようです。これは機能します。

if ((indexPath.row == 0 && indexPath.section == 0)) {
    [self performSegueWithIdentifier:@"simpleLines" sender:self];
}
if ((indexPath.row == 0 && indexPath.section == 5)) {
    [self openAppStore];
}
if (indexPath.section == 4)  {
    [self performSegueWithIdentifier:@"pushSettingsVC" sender:self];
}

これは動作しません:

if ((indexPath.row == 0 && indexPath.section == 0)) {
    [self performSegueWithIdentifier:@"simpleLines" sender:self];
}
if ((indexPath.row == 0 && indexPath.section == 5)) {
    [self openAppStore];
}
else  {
    [self performSegueWithIdentifier:@"pushSettingsVC" sender:self];
}

ナビゲーションコントローラーを使用すると、奇妙なダブルプッシュが発生します。私はプロジェクトを開始するたびにこれを行い、なぜそれが起こるのかを常に忘れています。次回は

于 2013-04-25T21:50:40.600 に答える