0

通知が発生したときにアプリがあります。アプリがバックグラウンドにあるときに通知バーが表示されます。そのバーをタップすると、通知セットのテーブルビューに移動します。バックグラウンドからアプリを終了すると、通知を受け取りますが、バーをタップすると、テーブルビューのインデックスパスが取得されないため、アプリがクラッシュします。

アプリがバックグラウンドで通知バーをクリックしてアプリが適切なテーブルビューに移動するように、didFinishLaunchingWithOptions と didReceiveLocalNotification でこのメソッドを呼び出しています。

4

2 に答える 2

0

UILocalNotificationuserInfoディクショナリがあります。そこに、その通知に関するいくつかの関連情報を保存できます。あなたの場合、indexPath

  NSDictionary *userInfo = [NSDictionary dictionaryWithObjectsAndKeys:selectedSymptomIndex,@"selectedSymptomIndex",keyIndexNumber,@"keyIndexNumber", nil];
localNotification.userInfo = userInfo;  

(didReceiveLocalNotification で) 通知を受信して​​いるときに、のように userInfo 辞書を取得できますnotification.userInfo。そこから、selectedSymptomIndex と keyIndexNumber を取得します。
これで indexPath を構築できます

NSIndexPath *selectedSymptIP = [NSIndexPath indexPathForRow:selectedSymptomIndex inSection:keyIndexNumber]; 
于 2013-05-20T12:42:59.610 に答える
0

ユーザー情報を印刷して、その内容を確認してください。これはディクショナリであり、何かが欠落しているか、nil 値が含まれている可能性があります。

于 2013-05-20T12:45:41.403 に答える