2

以前にこの問題が発生したことも、発生したことも聞いたことがありません。ipad 用のマスター/ディテール アプリケーション (分割ビュー) を使用しています。MVC の動的テーブルビューがあり、各セルをカスタム ビュー コントローラーに移行しようとしています。

現在、テーブルには 2 つのアイテムしかありません。プログラムが起動すると、どちらかを選択でき、問題なく正しいView Controllerに移行します。しかし、ほとんどの場合、何かをもう一度クリックすると、プログラムがクラッシュします。4 ~ 5 回のクリックが必要な場合もありますが、最終的には必ずクラッシュします。

コード スニペットは次のとおりです。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *segueName = [self.tableObjects objectAtIndex:indexPath.row];
    [self performSegueWithIdentifier:segueName sender:self];
}

tableObjects は、テーブル アイテムの作成に使用する NSArray です。セグエ呼び出しの前に print ステートメントを挿入すると、正しいセグエ名が出力されます。

エラーは、実際の performSegueWithIdentifier 呼び出しで常にスローされます。デバッガで確認しました。私が取得し続ける例外は次のとおりです: EXC_BAD_ACCESS

繰り返しになりますが、両方のセグエが最初に機能するので、これは問題ではないと思います。このメソッドは時々ランダムに呼び出されますか? メソッド呼び出しが安全であることを再確認する方法はありますか? performSegueWithIdentifier をオーバーライドして何かをする必要がありますか?

私はそれをtry catchに入れようとしました:

@try {
    [self performSegueWithIdentifier:segueName sender:self];
}
@catch (NSException *exception) {
    NSLog(@"%@", exception);
}
@finally {
    NSLog(@"finally");
}

@try 内のメソッド呼び出しをまだ指していました。例外のようにエラーをスローしているようには見えませんか?

4

1 に答える 1

3

参考までに、私はこのまったく同じ問題に遭遇していましたが、別の SO スレッドで答えを見つけました: iOS - ストーリーボード付き UISplitViewController - 複数のマスター ビューと複数の詳細ビュー

基本的に、セグエを作成するときに uisplitviewcontroller デリゲートを再度設定する必要がありました。これが将来誰かに役立つことを願っています。

于 2012-08-24T00:24:29.807 に答える