我正在尝试将UIView
添加到视图控制器,但是通过另一个类的对象,其对象当前存在于相关的视图控制器上。
myViewController在屏幕上 - >它添加了myNodeView的对象。 我单击myNodeView并调用myViewController类中的方法向其添加视图。
我使用myVc = [[myViewController alloc]init];
实例化
然后调用该方法。这是问题,这是一个新实例,这就是为什么它不会添加到当前可见的视图。请帮帮我。
Code -
// in nodeView
-(void)loadMap{
if(myVc==nil){
myVc=[[MyViewController alloc]init];
}
[myVc loadMapView];
}
// in MyViewController
-(void)loadMapView
{
if(mapView==nil)
{
self.mapView = [[MapView alloc]initWithFrame:CGRectMake(0, 0, 400, 400)];
self.mapView.backgroundColor=[UIColor whiteColor];
}
[self.view addSubview:self.mapView];
}
答案 0 :(得分:1)
每次调用loadMap方法时,都在创建MyViewController的新实例。你可以这样做:
// Getting current viewcontroller
UIViewController *topController = [UIApplication sharedApplication].keyWindow.rootViewController;
while (topController.presentedViewController)
topController = topController.presentedViewController;
// Call the method
MyViewController *myVc = (MyViewController *)topController;
[myVc loadMapView];
答案 1 :(得分:0)
在MyViewcontroller中,当你创建nodeView时,你应该分配nodeView的myVc属性,就像这个nodeView.myVc = self。
您还应确保nodeView的myVc属性已分配。
您也无需在nodeView中检查myVc == nil。
答案 2 :(得分:0)
我认为make My ViewController是子视图控制器(实现容器视图控制器)在传递的视图和事件的行为中更具可预测性。