【问题标题】:Swift: Have no idea how to call my delegate斯威夫特:不知道如何打电话给我的代表
【发布时间】:2015-04-10 17:13:11
【问题描述】:

我是 Swift 的新手。我完全无法理解代表。我有两个视图控制器,我需要为另一个我想使用委托的控制器设置 var。我在这里搜索了很多主题,但没有任何帮助。我的视图控制器 B 有一个我想从视图控制器 A 设置的 var myFlag。这里是视图控制器 B 代码

protocol flagDelegate {       
    func anyFlag(flag: Bool!)
}

class myBViewController: UIViewController {    
    var myFlag: Bool = false

    override func viewDidLoad() {
        super.viewDidLoad()
        println("myFlag: \(self.myFlag)")   
    }

    override func viewDidAppear(animated: Bool) {
        super.viewDidAppear(animated)
        println("myFlag: \(self.myFlag)")   
    }

    func anyFlag(flag: Bool!) {
        self.myFlag = flag
    }
} 

视图控制器 A 有一个按钮,它使用代码加载视图控制器 B:

@IBAction func addButton(sender: UIBarButtonItem) {
        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        let vc = storyboard.instantiateViewControllerWithIdentifier("myNC") as! UIViewController
        self.presentViewController(vc, animated: true, completion: nil)
    }

myNC 是一个包含视图控制器 B 的导航控制器。我不知道如何设置委托和调用它。请问你能帮帮我吗!提前致谢!

【问题讨论】:

    标签: ios swift uiviewcontroller delegates


    【解决方案1】:

    如果视图控制器 A 在即将显示的视图控制器(视图控制器 B)上设置属性,则无需使用委托模式。委托模式用于反向通信(从 B 到 A)。

    所以你可以在显示视图控制器之前设置一个属性,如下所示:

    @IBAction func addButton(sender: UIBarButtonItem) {
        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        let navigationVC = storyboard.instantiateViewControllerWithIdentifier("myNC") as! UINavigationController
    
        // get a reference to your VC
        let rootViewController = navigationVC.viewControllers[0] as MyBViewController
    
        // set the property
        rootViewController.myFlag = true // or false
    
        // or you could call the method you wrote
        rootViewController.anyFlag(true)
    
        // present the view controller
        self.presentViewController(navigationVC, animated: true, completion: nil)
    }
    

    【讨论】:

    • 感谢您的回答。我已经尝试过了,但出现“'应用程序试图以模态方式呈现活动控制器”错误。
    • 那么你的 VC 已经可见了。但这是一个不同的问题。
    猜你喜欢
    • 1970-01-01
    • 2017-07-22
    • 2017-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多