Ios 将委托设置为MKMapView
我不熟悉iOS编程。我已经用MKMapView元素创建了ViewController,我想设置delegateIos 将委托设置为MKMapView,ios,objective-c,delegates,mkmapview,viewcontroller,Ios,Objective C,Delegates,Mkmapview,Viewcontroller,我不熟悉iOS编程。我已经用MKMapView元素创建了ViewController,我想设置delegate[mapView setDelegate:self] 首先,我使用initWithNibName:bundle:like方法完成了这项工作: - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibName
[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
方法时,它工作正常
有人能解释一下为什么它在
initWithNibName:bundle
中设置委托消息时不起作用吗?视图没有加载到initWithNibName
中,它只是初始化viewcontroller类并加载包含视图详细信息的xib文件
当viewcontroller调用viewDidLoad
时,您将分配并初始化所有视图对象
在您的例子中,当您在initWithNibname
中setDelegate
时,调用它的值为nil,因此没有设置任何内容,但在viewDidLoad
mapView中分配并初始化,因此工作正常
有关更深入的了解,请参阅:
这里有一个很好的解释:
视图不会加载到
initWithNibName
中,它只是初始化viewcontroller类并加载包含视图详细信息的xib文件
当viewcontroller调用viewDidLoad
时,您将分配并初始化所有视图对象
在您的例子中,当您在initWithNibname
中setDelegate
时,调用它的值为nil,因此没有设置任何内容,但在viewDidLoad
mapView中分配并初始化,因此工作正常
有关更深入的了解,请参阅:
这里有一个很好的解释:
这一行是你的问题: [自我映射] 在
initWithNibName
中,映射尚未初始化,它返回nil
在
viewDidLoad
中,地图已经初始化。这一行是您的问题:
[自我映射]
在initWithNibName
中,映射尚未初始化,它返回nil
在
viewdiload
中,映射已经初始化。Tnx很多。现在我知道了viewcontroller对象何时初始化=)Tnx很多。现在我知道viewcontroller对象何时初始化=)