0

私はiOSプログラミングが初めてです。MKMapView 要素で ViewController を作成しましたが、デリゲートを設定したかったのです[mapView setDelegate:self]

最初に、メソッド initWithNibName:bundle: like: でそれを行いました:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {  
        [[self map] setDelegate:self]];
        UITabBarItem *item = [[UITabBarItem alloc] init];
        [item setTitle:@"Map"];
        [self setTabBarItem:item];
    }
    return self;
}

この場合、MKMapView はメッセージを送信しませんでしたが、デリゲート メッセージをviewDidLoadメソッドに設定すると、正常に機能しました。

setting delegate messageのときに機能しなかった理由を誰かが説明してもらえますinitWithNibName:bundleか?

4

2 に答える 2

1

この行はあなたの問題です:

【セルフマップ】

initWithNibNameマップではまだ初期化されておらず、nil を返します。

マップではviewDidLoadすでに初期化されています。

于 2013-07-11T13:01:05.890 に答える