0

我正在使用一个简单protocol的方法来判断delegate何时点击了保存按钮,VC2以便view controller可以popViewControllerAnimated通过VC1.

VC2有一个protocol确认VC1

VC2.h

#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.m

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

VC1.m

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

希望你能帮忙。

4

3 回答 3

0

VC2 怎么知道 VC1 是委托人?当您将视图推送到 VC2 时,您必须将委托设置为 VC1。并且 VC1 必须更早地实例化并且在 VC2 的整个生命周期内都处于活动状态。

于 2013-03-11T08:33:02.043 回答
0

我想你忘了在你的 VC1.m 中添加这一行

[vc2Object setDelegate:self];

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

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

于 2013-03-11T08:35:13.080 回答
0

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

于 2013-03-11T08:36:29.200 回答