我是iOS编程的新手,我试图理解并开始实现代表以获取视图控制器之间的信息以及它们可能具有的任何其他用途。在iOS编程中了解代表
我已经使用this topic得到了一些进一步,但我不能评论,因为我刚刚创建此帐户,所以我不能在帖子上提出问题。我复制drewag的例子,但此行 @IBOutlet weak var delegate: ViewControllerBDelegate?
是给我我删除了一个错误“IBOutlet中属性不能有非对象类型SecondViewControllerDelegate”
,它运行,但没有被两个视图控制器之间发送的信息。我以为我开始理解代表,但只是让他们实施,开始变得令人沮丧。我已经在这几天了。
FirstViewController:
class FirstViewController: UIViewController, SecondViewControllerDelegate {
@IBOutlet weak var theMap: MKMapView!
func requiredText() -> String {
return "test"
}
SecondViewcontroller:
protocol SecondViewControllerDelegate {
func requiredText() -> String
}
class SecondViewController: UIViewController {
@IBOutlet weak var label: UILabel!
@IBOutlet weak var delegate: SecondViewControllerDelegate?
@IBAction func decide(sender: AnyObject) {
if let actualDelegate = self.delegate {
self.label.text = actualDelegate.requiredText()
}
}
所以我的问题简单地说就是我究竟做错了什么?我以为我正确地遵循了这个例子。
抢劫的建议固定我的错误。但是我的代码仍然没有做我想做的事情。它应该将标签文本更改为发送的字符串,在这种情况下,当我点击附加到我的决定功能的按钮时,这是“测试”。 – 2014-10-28 01:49:50
如果我从循环中提取'self.label.text = actualDelegate.requiredText()'(和声明)Xcode说“SecondViewControllerDelegate没有名为requiredText的成员函数” 编辑:我加了!它拿走了错误,但我BAD_INSTRUCTION – 2014-10-28 01:55:36