我有两个UIViewControllers A和B.的iOS解雇的ViewController回调问题
[self presentViewController:B animated:YES completion:nil];
我调用dismissViewController:
后我需要调用在已经提出的乙ViewControlller父视图控制器的一些方法的能力。我认为-viewWillAppear
方法会被调用,但在解雇后它不起作用。
我有两个UIViewControllers A和B.的iOS解雇的ViewController回调问题
[self presentViewController:B animated:YES completion:nil];
我调用dismissViewController:
后我需要调用在已经提出的乙ViewControlller父视图控制器的一些方法的能力。我认为-viewWillAppear
方法会被调用,但在解雇后它不起作用。
当你创建的B ViewController
对象,然后实现一个自定义的init
方法的东西看起来像:
把这种方法B ViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil withParentView:(UIViewController *)parentViewController
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
self.pViewController = parentViewController;
// Custom code
}
return self;
}
当你创建B观看控制器的对象,然后使用上面的方法和你的parentViewController将自我。
而在解雇你的时间凸轮调用
[self.pViewController viewWillAppear:NO];
希望这会帮助你。
所有最好的!
所以,我有能力使用self.parentViewController属性并调用viewWillAppear方法。 – 2013-03-02 13:12:46
解决方法是要求“A”ViewController关闭“B”ViewController(通过指向ViewController的指针),然后在完成代码中执行所需操作。当你有一个那么B则C的ViewController
iOS6的推出了视图控制器“回退”功能,你可以,当呈现C,后退到A.
看看这个link
在你控制器B的子类,创建控制器A
@property (nonatomic, strong) ControllerA *controllerA;
属性你之前存在控制器B,设置属性:
[controllerB setControllerA:self];
当您关闭控制器B,使用完毕块来调用要执行的控制器A的方法:
[self dismissViewControllerAnimated:YES completion:^{
[self.controllerA doSomething];
}];
(一个可能的疑难杂症是,你结了如果控制器A在控制器B之前解除分配,则为保留周期。如果是这样的话,您最好将controllerA设置为controllerB的代表并使用非正式协议)
它们是否都在导航控制器中? – Spectravideo328 2013-03-02 13:02:44
不,他们不是。 – 2013-03-02 13:10:32