我在protocol
点击保存按钮时使用简单delegate
告诉VC2
,view controller
popViewControllerAnimated
可以VC1
解除VC2
{1}}。
protocol
有VC1
#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}}
希望你能提供帮助。
答案 0 :(得分:0)
VC2是如何知道VC1是委托的?当您将视图推送到VC2时,您必须将委托设置为VC1。 VC1必须先实例化,并在VC2的整个生命周期内保持活动状态。
答案 1 :(得分:0)
我想你忘了在VC1.m
中添加这一行[vc2Object setDelegate:self];
此外,您的设计有点令人困惑,因为您为什么要将VC2对象发送回委托方法?。
如果您要确认协议,则应该有VC2的对象。您应该将VC2对象的委托设置为VC1对象。
答案 2 :(得分:0)
确保您已在vc1.h文件中完成<VC2Delegate>
并分配vc2.delegate = self;