我使用一个简单的protocol来告诉delegate,当VC2上的保存按钮被点击时,view controller就可以被VC1取消。
VC2有一个VC1确认的protocol。
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;
@endVC2.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];
}希望你能帮上忙。
发布于 2013-03-11 08:35:13
我想您忘了在VC1.m中添加这一行
[vc2Object setDelegate:self];而且,您的设计有点混乱,因为为什么要将VC2对象发送回委托方法?
如果您正在确认协议,则应该有VC2的对象。您应该将VC2对象的委托设置为VC1对象。
发布于 2013-03-11 08:33:02
VC2是如何知道VC1是委托的?当您推送视图VC2时,必须将委托设置为VC1。VC1必须更早地实例化,并在VC2的整个生命周期中处于活动状态。
发布于 2013-03-11 08:36:29
确保您在vc1.h文件中执行了<VC2Delegate>,并分配了vc2.delegate = self;
https://stackoverflow.com/questions/15333914
复制相似问题