2013-12-15 104 views
0

我試圖將UIView添加到視圖控制器,但通過其對象當前存在於視圖控制器上的另一個類的對象。將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

在MyViewcontroller,當您創建nodeView,你應該分配nodeView的myVc財產,這樣nodeView.myVc =自我。

您還應該確保nodeView的myVc屬性已分配。

您也不需要檢查節點視圖中的myVc == nil。

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]; 
0

我覺得做MyViewController是childViewController(實現一個容器視圖控制器)是在通過意見和事件的行爲更容易預測。

相關問題