将UIView添加到另一个类的视图控制器

时间:2013-12-15 06:59:54

标签: ios uiview uiviewcontroller

我正在尝试将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];
}

3 个答案:

答案 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是子视图控制器(实现容器视图控制器)在传递的视图和事件的行为中更具可预测性。