xcode - 委托(delegate)协议(protocol)不起作用,返回 nil

标签 xcode swift delegates protocols

我正在尝试快速使用协议(protocol)/委托(delegate),虽然我没有收到任何错误,但似乎我的委托(delegate)没有被创建。它对我的返回为零,我不知道为什么。

这是我的代码

1 级

import UIKit

protocol GameViewSliding{
    func slideGameView()
}

class GameDetailsViewController: UIViewController {
var delegate:GameViewSliding?

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

@IBAction func showOptions(sender: AnyObject) {

    println("button pressed")
    println(delegate)
    delegate?.slideGameView()
}

}

符合协议(protocol)的Class 2

import UIKit

var currentHoleNumber:Int = 0
var parThree = false;
var parFive = false;

class GameViewController: UIViewController,  GameViewSliding{


var gameDetailsVC:GameDetailsViewController = GameDetailsViewController()
override func viewDidLoad() {
    super.viewDidLoad()

    println("inside the game class")
    gameDetailsVC.delegate = self
}

func slideGameView(){
    println("this is from the root controller")
}

}

最佳答案

问题可能出在您未在此处显示的代码中。在prepareForSegue中,您通常希望在目标 View Controller 上设置委托(delegate)。

本质上,您将其设置在您正在创建的类的实例上,但这并不是实际显示的实例。因此显示的实例没有委托(delegate)。

删除第二个 Controller 的本地变量, View 中委托(delegate)的设置确实加载,只需将其设置在目的地上,为segue做好准备,我打赌它会完美地工作。

关于xcode - 委托(delegate)协议(protocol)不起作用,返回 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29049889/

相关文章:

xcode - 在序列Sprite Kit中使用SKAction时,SKSpriteNode不会淡入InWithDuration

ios - MessageUI 框架 - 图像不显示在 iPhone 上的撰写 View 中

ios - setDelegate解释

xcode - Swift 中的延迟操作

performance - SWIFT:访问对象的捷径?

swift: if-let 并行赋值

swift - UIView 自定义过渡在完成时快速恢复

ios - 从多个 View Controller 接收委托(delegate)方法调用

objective-c - 独立的委托(delegate)和 Controller

xcode - UISwitch 设置开/关图片