斯威夫特:不知道如何打电话给我的代表

Posted

技术标签:

【中文标题】斯威夫特:不知道如何打电话给我的代表【英文标题】: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 的导航控制器。我不知道如何设置委托和调用它。请问你能帮帮我吗!提前致谢!

【问题讨论】:

【参考方案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 已经可见了。但这是一个不同的问题。

以上是关于斯威夫特:不知道如何打电话给我的代表的主要内容,如果未能解决你的问题,请参考以下文章

如何在后台运行android应用程序时显示通话屏幕

安卓系统怎么视频通话

使用快速询问检查人员是不是接听电话或收到语音邮件

HTML5 输入类型号与电话

一句话拯救自己

如何打印出给定电话号码可能代表的所有可能的字母组合?