委派不能正常工作(应告诉VC popViewControllerAnimated)

时间:2013-03-11 08:18:33

标签: iphone protocols delegation popviewcontrolleranimated

我在protocol点击保存按钮时使用简单delegate告诉VC2view controller popViewControllerAnimated可以VC1解除VC2 {1}}。

protocolVC1 #import <UIKit/UIKit.h> @class VC2; @protocol VC2Delegate <NSObject> - (void)saveBtnWasTpdOnVC2:(VC2 *)controller; @end @interface VC2 : UITableViewController @property (weak, nonatomic) id <VC2Delegate> delegate; - (IBAction)saveBtnTpd:(id)sender; @end 确认。

VC2.h

- (IBAction)saveBtnTpd:(id)sender
{
    NSLog(@"save tapped");
    [self.delegate saveBtnWasTpdOnVC2:self];
}

VC2.m

- (void)saveBtnWasTpdOnVC2:(VC2 *)controller
{
    NSLog(@"saveBtnWasTpd"); // I don't see this NSLog!
    [controller.navigationController popViewControllerAnimated:YES];
}

VC1.m

{{1}}

希望你能提供帮助。

3 个答案:

答案 0 :(得分:0)

VC2是如何知道VC1是委托的?当您将视图推送到VC​​2时,您必须将委托设置为VC1。 VC1必须先实例化,并在VC2的整个生命周期内保持活动状态。

答案 1 :(得分:0)

我想你忘了在VC1.m

中添加这一行
[vc2Object setDelegate:self];

此外,您的设计有点令人困惑,因为您为什么要将VC2对象发送回委托方法?。

如果您要确认协议,则应该有VC2的对象。您应该将VC2对象的委托设置为VC1对象。

答案 2 :(得分:0)

确保您已在vc1.h文件中完成<VC2Delegate>并分配vc2.delegate = self;