2014-11-14 20 views
0

我處於一個奇怪的場景。我創建了一個nestedViewController,其中單擊tableview中的一行,通過調整框架,在父嵌套視圖的節標題的標題下方啓動另一個nestedviewcontroller。現在,爲了向第二個嵌套視圖添加不同的功能,我在它的childviewcontroller中添加了一個UIViewController(在tableview中有自定義單元格)。現在,當我點擊viewController的單元格時,第一個NestedViewController的TableView委託被調用!!!但是,現在的視圖是我作爲childViewController添加到第二個NestedViewController的UIViewController。點擊childviewcontroller中的單元訪問嵌套環境中父級父視圖控制器的tableview委託

我添加的UIViewController第二NestedViewController的方法是:

DRProductWriteRatingViewController *writeRatingVC = [[DRProductWriteRatingViewController alloc] initWithNibName:@"DRProductWriteRatingViewController" bundle:nil]; 
     writeRatingVC.productDict = [productDict mutableCopy]; 

     newVC = [[DRRatingNestedViewController alloc] initWithFrame:CGRectMake(0,0,320,[UIScreen mainScreen].applicationFrame.size.height-                  COLLAPSED_HEADER_HEIGHT*self.depth) andEntity:childEntity andListing:_listing]; 
     newVC.category = self.category; 
     //   self.depth = self.depth+1; 
     dispatch_async(dispatch_get_main_queue(), ^{ 

      writeRatingVC.tableView.frame = CGRectMake(0,0,320,[UIScreen mainScreen].applicationFrame.size.height-                  COLLAPSED_HEADER_HEIGHT*self.depth-40); 
      [newVC.tableView removeFromSuperview];// removing tableview of nestedVC as it is irrelevant 
      [newVC addChildViewController:writeRatingVC]; 
      [newVC.view addSubview:writeRatingVC.view]; 
      [writeRatingVC didMoveToParentViewController:newVC]; 
     }); 

我也推第二NestedViewController在第一個方式是這樣的:

- (void)pushViewController:(UIViewController *)viewController { 

//1. The current controller is going to be removed 
// [self willMoveToParentViewController:nil]; 

[viewController willMoveToParentViewController:self]; 
//2. The new controller is a new child of the container 
[self addChildViewController:viewController]; 

//3. Setup the new controller's frame depending on the animation you want to obtain 
CGRect containerRect = CGRectMake(0, self.view.bounds.size.height , 
            320., 
            self.view.bounds.size.height - COLLAPSED_HEADER_HEIGHT*(self.depth)); 
viewController.view.frame = containerRect; 
[self.view addSubview:viewController.view]; 
// viewController.view.alpha = 0; 


//assume that the new view controller is positioned at the bottom of the screen 
viewController.view.transform = CGAffineTransformIdentity; 
// CGFloat travelDistance = self.view.bounds.size.height - COLLAPSED_HEADER_HEIGHT - NAVIGATION_BAR_HEIGHT; 
CGFloat travelDistance = self.view.bounds.size.height - COLLAPSED_HEADER_HEIGHT - NAVIGATION_BAR_HEIGHT; 

if(self.depth>1) { 
    travelDistance += NAVIGATION_BAR_HEIGHT; 
} 

travelDistance += NAVIGATION_BAR_HEIGHT; 

if (self.depth >= 2) { 
    travelDistance -=NAVIGATION_BAR_HEIGHT; 
} 

if (self.depth == 5) { 
    travelDistance -=NAVIGATION_BAR_HEIGHT; 
} 
CGAffineTransform travel = CGAffineTransformMakeTranslation (0, -travelDistance); 

[UIView animateWithDuration:1 delay:0 usingSpringWithDamping:kDamping initialSpringVelocity:kInitialSpringVelocity options:0x00 animations:^{ 
    viewController.view.transform = travel; 
    viewController.view.alpha = 1; 
} completion:^(BOOL finished) { 
    //  self.view.transform = CGAffineTransformIdentity; 
    [viewController didMoveToParentViewController:self]; 
    //mayanktest  [self.tableView reloadData]; 
}]; 

} 

的深度這裏只決定的數添加了NestedVCs。

First Nested VC: DRRatingNestedViewController: 0xd3a9520 
Second Nested VC: DRRatingNestedViewController: 0xd0b4f50 
Child View to Second Nested VC : DRProductWriteRatingViewController: 0xd0c15b0 

所以調用了對象0xd3a9520的tableViewDelegate,這是我的問題。

這裏應該是什麼問題?

回答

0

問題出在childviewcontroller框架上。由於框架較小,因此可以訪問後面的視圖。因此, 修改必須在此完成:

CGRect containerRect = CGRectMake(0, self.view.bounds.size.height , 
           320., 
           self.view.bounds.size.height - COLLAPSED_HEADER_HEIGHT*(self.depth)); 
viewController.view.frame = containerRect; 
[self.view addSubview:viewController.view]; 
相關問題