2

ユーザーが現在地の共有を受け入れた後、ビューを表示しようとしています。コードは次のとおりです。

-(void) locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {
    if (status == kCLAuthorizationStatusDenied) {
        NSLog(@"Denied");
    }
    else if (status == kCLAuthorizationStatusAuthorized) {
        NSLog(@"Accepted!");
        AlertViewController *aViewController = [[AlertViewController alloc] initWithNibName:@"AlertViewController" bundle:nil];
        aViewController.view.frame = CGRectMake(0, 0, 320, 460);
        aViewController.view.backgroundColor = [UIColor colorWithWhite:0 alpha:0.5];
        AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
        [appDelegate.window addSubview:[aViewController view]];
    }
}

しかし、私*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFNumber isEqualToString:]: unrecognized selector sent to instance 0xee6fc90'は行でエラーが発生しますaViewController.view.frame = ...

ブレークポイントを設定し、ステートメントの後にaViewControllerないことを確認しました。何が問題なのかわからないようです。解決策を提案してください。0x00000alloc

4

3 に答える 3

3

xibファイルまたはAlertViewControllerのビュー初期化ルーチン(つまり、viewDidLoadまたはloadView)に問題があると思われます。フレームを設定する行がクラッシュしていると私が考える唯一の方法は、viewプロパティに初めてアクセスし、ビューが遅延ロードされることです。

交換したら

aViewController.view.frame = CGRectMake(0, 0, 320, 460);

UIView *aVCView = aViewController.view;
aVCView.frame = CGRectMake(0, 0, 320, 460);

次に、2行目ではなく、1行目にクラッシュが表示されます。

さらにデバッグするには、AlertViewControllerのviewDidLoadなどでブレークを使用します。そして、xibのすべてを再確認してください。

于 2012-06-15T04:44:09.587 に答える
2
于 2012-06-15T04:36:36.723 に答える
0

条件文では、どのタイプstatusですか?間違った演算子またはメソッドを使用している可能性があります。たとえば、が、、、またはの場合statusintbool使用float==ます。文字列の場合はを使用しisEqualToString、ジェネリックオブジェクトの場合は単純にを使用できますisEqual:isEqual:などの関数の特殊なバージョンもありますisEqualToArray

お役に立てれば!

于 2012-06-15T00:06:35.223 に答える