首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >委派不正常(应将VC告知popViewControllerAnimated)

委派不正常(应将VC告知popViewControllerAnimated)
EN

Stack Overflow用户
提问于 2013-03-11 08:18:32
回答 3查看 106关注 0票数 0

我使用一个简单的protocol来告诉delegate,当VC2上的保存按钮被点击时,view controller就可以被VC1取消。

VC2有一个VC1确认的protocol

VC2.h

代码语言:javascript
复制
#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

代码语言:javascript
复制
- (IBAction)saveBtnTpd:(id)sender
{
    NSLog(@"save tapped");
    [self.delegate saveBtnWasTpdOnVC2:self];
}

VC1.m

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

希望你能帮上忙。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-11 08:35:13

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

代码语言:javascript
复制
[vc2Object setDelegate:self];

而且,您的设计有点混乱,因为为什么要将VC2对象发送回委托方法?

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

票数 0
EN

Stack Overflow用户

发布于 2013-03-11 08:33:02

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

票数 0
EN

Stack Overflow用户

发布于 2013-03-11 08:36:29

确保您在vc1.h文件中执行了<VC2Delegate>,并分配了vc2.delegate = self;

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15333914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档