我提供了一个viewController,它包含一个导航控制器,其视图是从另一个带有UITableView的笔尖加载的。我想从UITableViewController中忽略那个呈现的viewController。我已经尝试了self.parentViewController和self.navigationController以及self.navigationController.parentViewController的每个组合,但我仍然无法解雇它。如何以及被解雇的最佳方式是什么?
答案 0 :(得分:0)
我从未让self.navigationController.parentViewController
按照宣传的方式工作,但这对我有用:
NSArray *viewControllerArray = [self.navigationController viewControllers];
int parentViewControllerIndex = [viewControllerArray count] - 2;
[[viewControllerArray objectAtIndex:parentViewControllerIndex] myParentViewMethod:arg1 withArg2:arg2 ...];
答案 1 :(得分:0)
this无效吗?
[myViewController presentModalViewController:otherController animated:YES];
// ...
[myViewController dismissModalViewControllerAnimated:YES];
答案 2 :(得分:0)
听起来你已经把自己画成了一个与你的等级有点相关的角落,但是我认为我们可以修复它。有两种“通常”的方法是:
在你目前的情况下,这可能需要一个令人不舒服的重构,在这种情况下,将一个句柄作为属性暴露给另一个控制器可能更容易,只需确保它是一个弱引用,如下所示:
@interface ControllerB : UIViewController
{
ControllerA* controllerA;
}
@property (readwrite, nonatomic, assign) ControllerA* controllerA; // weak reference
@end
或者无论如何,关键是要正确调整变量的范围,以便在需要时可以使用它。
答案 3 :(得分:0)
我最后使用委托解雇了父母。