无法设置视图控制器的委托
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 类的协议中添加委托方法。
【讨论】:
以上是关于无法设置视图控制器的委托的主要内容,如果未能解决你的问题,请参考以下文章