从外部viewcontroller访问时未初始化ViewController属性

时间:2013-09-24 22:23:06

标签: ios objective-c uiviewcontroller xcode5

我的DetailViewController在它的nib上有一个MapView,但每当我尝试在不同的viewcontroller中访问该属性之后我将它推到导航控制器堆栈上,我发现该属性仍为零,所以没有任何反应。有谁知道为什么会发生这种情况? UIImageViews也发生了这种情况,它不仅仅是mapviews。 (Xcode 5,ios7)

DetailViewController *dvc = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];

CLLocationCoordinate2D zoomLocation = [[AppDelegate sharedLocationManager] location].coordinate;
MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(zoomLocation, 0.5*METERS_PER_MILE, 0.5*METERS_PER_MILE);
[dvc.mapView setRegion:viewRegion animated:YES];

MomentAnnotation *myAnnotation = [[MomentAnnotation alloc] init];
myAnnotation.coordinate = zoomLocation;
myAnnotation.title = @"Photo";
[dvc.mapView addAnnotation:myAnnotation];

[self.navigationController pushViewController:dvc animated:YES];

1 个答案:

答案 0 :(得分:0)

在iOS 7中,视图在内存中加载了一点,或者我们可以说ViewDidLoad方法调用后一位。因此,当您尝试设置UI属性时,您可能会将它们设置为零。因此,在确认视图元素准备就绪后,您将更好地设置值。 presentViewController方法提供了完成处理程序,您可以在其中设置属性值。 [dvc view]在设置属性之前调用此方法。如果不是,这将在内存中加载视图。另一种方法是在推送视图控制器

之后设置属性