Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 代表以迅捷的语言发言_Ios_Uiviewcontroller_Swift_Ios8 - Fatal编程技术网

Ios 代表以迅捷的语言发言

Ios 代表以迅捷的语言发言,ios,uiviewcontroller,swift,ios8,Ios,Uiviewcontroller,Swift,Ios8,我有两个控制器,我需要调用函数第一个控制器到第二个控制器: class ViewController: UIViewController, testProtocol { var secondController: SecondViewController = SecondViewController() override func viewDidLoad() { super.viewDidLoad() seco

我有两个控制器,我需要调用函数第一个控制器到第二个控制器: class ViewController: UIViewController, testProtocol {

        var secondController: SecondViewController = SecondViewController()

        override func viewDidLoad() {
            super.viewDidLoad()

            secondController.delegate = self
        }
        func testDelegate() {
            println("Hello delegate")
        }</pre>
在第二个控制器中,我在类中创建了协议和初始化委托:

    protocol testProtocol {
        func testDelegate() // this function the first controllers
    }

    class SecondViewController: UIViewController {
        var delegate: testProtocol?
    ....
    }
    @IBAction func testDelegateClicked(sender : AnyObject) {
            delegate?.testDelegate()
        }
class ViewController: UIViewController, testProtocol {

        var secondController: SecondViewController = SecondViewController()

        override func viewDidLoad() {
            super.viewDidLoad()

            secondController.delegate = self
        }
        func testDelegate() {
            println("Hello delegate")
        }</pre>
第一控制器 class ViewController: UIViewController, testProtocol {

        var secondController: SecondViewController = SecondViewController()

        override func viewDidLoad() {
            super.viewDidLoad()

            secondController.delegate = self
        }
        func testDelegate() {
            println("Hello delegate")
        }</pre>
类ViewController:UIViewController,testProtocol{

class ViewController: UIViewController, testProtocol {

        var secondController: SecondViewController = SecondViewController()

        override func viewDidLoad() {
            super.viewDidLoad()

            secondController.delegate = self
        }
        func testDelegate() {
            println("Hello delegate")
        }</pre>
var secondController:SecondViewController=SecondViewController()
class ViewController: UIViewController, testProtocol {

        var secondController: SecondViewController = SecondViewController()

        override func viewDidLoad() {
            super.viewDidLoad()

            secondController.delegate = self
        }
        func testDelegate() {
            println("Hello delegate")
        }</pre>
重写func viewDidLoad(){ super.viewDidLoad() secondController.delegate=self class ViewController: UIViewController, testProtocol {

        var secondController: SecondViewController = SecondViewController()

        override func viewDidLoad() {
            super.viewDidLoad()

            secondController.delegate = self
        }
        func testDelegate() {
            println("Hello delegate")
        }</pre>
} func testDelegate(){ println(“你好,代表”) }

但是函数没有被调用。我假设您正在使用故事板。如果我是正确的,那么您的问题是在第一个控制器中创建的
secondController
,不是您正在演示的实际控制器。您需要在
prepareforsgue:
中设置
secondController

class ViewController: UIViewController, testProtocol {

        var secondController: SecondViewController = SecondViewController()

        override func viewDidLoad() {
            super.viewDidLoad()

            secondController.delegate = self
        }
        func testDelegate() {
            println("Hello delegate")
        }</pre>
第二控制器 class ViewController: UIViewController, testProtocol {

        var secondController: SecondViewController = SecondViewController()

        override func viewDidLoad() {
            super.viewDidLoad()

            secondController.delegate = self
        }
        func testDelegate() {
            println("Hello delegate")
        }</pre>
不变的

第一控制器 class ViewController: UIViewController, testProtocol {

        var secondController: SecondViewController = SecondViewController()

        override func viewDidLoad() {
            super.viewDidLoad()

            secondController.delegate = self
        }
        func testDelegate() {
            println("Hello delegate")
        }</pre>

如何显示第二个控制器的标准功能(ViewDidLoad和didReceiveMemoryWarning)中的
secondViewController
还有我展示的按钮处理程序,以确保您获得对委托的弱引用。swift中的属性默认为强属性,但我使用secondController=segue!.destinationViewController作为SecondViewController.delegate=self;@Maria,查看我添加的注释。您需要将
添加到
secondController
变量。如果您这样做,您还需要将
设置为?
如果我们不使用故事板,如何实现@Firo@PREMKUMAR,您只需创建新的视图控制器(
var controller=SecondController()
),设置它的委托(
controller.delegate=self
),然后最后显示它(
self.navigationController.pushViewController(controller)
)…如果您仍然有问题,请告诉我! class ViewController: UIViewController, testProtocol {

        var secondController: SecondViewController = SecondViewController()

        override func viewDidLoad() {
            super.viewDidLoad()

            secondController.delegate = self
        }
        func testDelegate() {
            println("Hello delegate")
        }</pre>