【问题标题】:ViewController properties not initialized when accessing from outside viewcontroller从外部视图控制器访问时未初始化视图控制器属性
【发布时间】:2013-09-30 08:23:06
【问题描述】:

我的 DetailViewController 的 nib 上有一个 MapView,但是每当我在将其推送到导航控制器堆栈之前尝试在不同的 viewcontroller 中访问该属性时,我会发现该属性仍然是 nil,所以什么也没有发生。有谁知道为什么会发生这种情况? UIImageViews 也发生在我身上,这不仅仅是地图视图。 (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];

【问题讨论】:

    标签: ios objective-c uiviewcontroller xcode5


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多