2

ユーザーが UIAlertView の [OK] ボタンをクリックしたときに、ユーザーを別のコントローラーに送信しようとしていますが、次のエラーが発生しています。

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '***   setObjectForKey: object cannot be nil (key: classname)'

私の UIAertView は、次のような if ステートメント内にあります。

if([placemarks count] > 0)
  {
    CLPlacemark *foundPlacemark = [placemarks objectAtIndex:0];
    UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"Location set"
                       message:[NSString stringWithFormat:@"Your location, was set to %@", foundPlacemark.country]
                                                 delegate:self
                                        cancelButtonTitle:@"OK"
                                        otherButtonTitles:nil];
             [message show];

  }

ボタンがクリックされていることを確認しています:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
  if(buttonIndex == 0)
{
    MasterViewController *controller=[[MasterViewController alloc]initWithNibName:@"MasterViewController" bundle:nil];
   [self.navigationController pushViewController:controller animated:YES];
  }
}

私はデリゲートセットを持っています:

@interface LocationViewController : UIViewController <CLLocationManagerDelegate, UIAlertViewDelegate>

UIAlertView は単独で正常に動作します。私が見逃しているものについて何か考えはありますか?

4

2 に答える 2

1
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
  if(buttonIndex == 0)
{
    // MasterViewController *controller=[[MasterViewController alloc]initWithNibName:@"MasterViewController" bundle:nil];
       MasterViewController *controller=[[MasterViewController alloc]init]; // creat your MasterViewController like this. 
   [self.navigationController pushViewController:controller animated:YES];
  }
}

このようなコーディングでクラッシュしない場合は、IB に問題があると思います

于 2013-02-25T04:03:47.043 に答える
1

Interface Builder を使用して MasterViewController の UI を作成していますか? MasterViewController の nib ファイルに問題があるようです。MasterViewController が xib ファイルから init を取得すると、設定が失われ、例外が発生します。

最も考えられる状況は、xib ファイルとファイルの所有者の間の接続に問題がある可能性があることです。コードで削除した IBOutlet に接続されているが、xib ファイルに接続が残っているかどうかを確認してください。その場合は、接続を削除すると解決できます。

于 2013-02-25T03:52:41.737 に答える