无法设置视图控制器的委托

Posted

技术标签:

【中文标题】无法设置视图控制器的委托【英文标题】:Not Able to Set Delegate of View Controller 【发布时间】:2012-06-27 14:07:35 【问题描述】:

我正在尝试像这样推送视图控制器:

SampleViewControllerB *svcb = [self.storyboard instantiateViewControllerWithIdentifier:@"viewB"];
svcb.delegate = self;
[self.navigationController pushViewController:svcb animated:YES];

如果我删除 svcb.delegate = self; 行,它可以正常编译并正常工作。但是,如果我尝试添加它,它将无法编译并给出错误

Property 'delegate' not found on object of type 'SampleViewControllerB *'

有人知道如何解决这个问题吗?提前致谢!

【问题讨论】:

SampleViewControlerB 是否有属性delegate?我得问问。 @Linuxios 我假设 UIViewControllers 默认有一个委托属性。现在改正了,我的错!谢谢! 【参考方案1】:

这是你的问题。你必须在你的类中定义你自己的delegate 属性,然后自己调用它。请务必记住也要制定委托协议!

【讨论】:

是的,我制定了委托协议,但忘记在我的 .h 文件中实际定义 delegate 属性。一旦它允许我,我会接受这个答案...感谢您的帮助!【参考方案2】:

UIViewControler 没有委托属性,如果您需要向您的 SampleViewControllerB 添加委托,则需要明确定义它

【讨论】:

谢谢,现在修好了!我假设UIViewController 有一个委托属性... @gtm 欢迎您,如果有效,请不要忘记接受答案:)【参考方案3】:

在 SampleViewControllerB 的 .h 中创建 parentViewController 变量说..

ParentViewController *parentObject ;

并使其具有相同的属性

@property(nonatomic,retain) ParentViewController *parentObject ;

在 SampleViewControllerB 类的 .m 中合成

@synthesize parentObject ;

现在使用你推送控制器的代码

SampleViewControllerB *svcb = [self.storyboard instantiateViewControllerWithIdentifier:@"viewB"];
svcb.parentObject = self;
[self.navigationController pushViewController:svcb animated:YES];

希望对你有帮助

【讨论】:

是的,然后在 SampleViewControllerB 类中引用您的父级并创建该属性并合成它...然后使用它..不要给它命名委托您可以给任何东西..并将 self 传入this.. 并调用您的方法只是要编辑并使用它查看已编辑的部分... 哦,我明白了...我已经有一些正在工作的东西,但无论如何谢谢。我以后会试试这个。【参考方案4】:

对于 Delegate 属性,您需要在 SampleViewControllerB 类的协议中添加委托方法。

【讨论】:

以上是关于无法设置视图控制器的委托的主要内容,如果未能解决你的问题,请参考以下文章

如何在swift 3中从一个视图控制器传递到上一个视图控制器时设置委托?

从视图控制器设置 SKScene 委托,未找到委托

视图控制器的设置委托问题?

如何设置滚动视图委托? [关闭]

将委托设置为视图控制器时 UITextField 停止工作

如何在视图控制器之外设置数据源和委托