-1

私のアプリは ios 5.1 と xcode 4.4.1 で正常に動作します。ro ios 6 と xcode 4.5 を更新すると、ビューを変更するとクラッシュします。ストーリーボードを使用して UI を作成します。最初のビューで TableViewController を取得し、1 つのセルを選択すると、3 つのボタン、1 つのスライダー、1 つの UITableView、2 つのラベルを含む別のビューに移動する必要があります。それらは IBOutlet でコントローラーに接続します。2番目のビューでは、このメソッドの終了後にクラッシュが発生したと思います

-(void)viewWillAppear:(BOOL)animated

この時点でのコードストック

0x347735aa:  ldr    r4, [r0]

私は何をすべきか ?編集:ここに私のスタックトレース

0 objc_msgSend
1 -[UITableView _selectRowAtIndexPath:animated:scrollPosition:notifyDelegate:]:
2 -[UITableView _userSelectRowAtPendingSelectionIndexPath:]:
3 __NSFireDelayedPerform:
4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__:
5 __CFRunLoopDoTimer:
6 __CFRunLoopRun:
7 CFRunLoopRunSpecific:
8 CFRunLoopRunInMode:
9 GSEventRunModal:
10 UIApplicationMain:
11 main at main.m:14:
4

3 に答える 3

2

willSelectRowAtIndexPathメソッドの構文に誤りがあります。そのはず

-(NSIndexPath *)tableView:willSelectRowAtIndexPath:いいえ

-(void)tableView:willSelectRowAtIndexPath:

于 2012-09-28T19:04:39.703 に答える
1

トレース後に問題を見つけ、コードを何度も読みました。問題は、この方法を使用したことでした。

- (void)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath

どのセルが選択したかを知っています。しかし、私はios6がその方法で問題を抱えていると思います。だから私がそれを変更したとき

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

すべてがうまくいきました。それでもなぜそれが起こったのか分かりません。

于 2012-09-22T07:22:43.830 に答える
0

tableView:willSelectRowAtIndexPath:は、テーブル内の行が選択されようとしていることをデリゲートに通知するだけでありnil、特定の行を選択したくない場合は返すことができます。アプリが必要だと思う場合は別の IndexPath を返すことができます。

このメソッドは、詳細ビュー コントローラーへのドリルダウンをトリガーすることを意図したものではないため、古い呼び出しが iOS 6 でクラッシュするのは当然だと思います。以前は「幸運」でした。

于 2012-09-22T07:35:23.110 に答える