斯威夫特:不知道如何打电话给我的代表
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 已经可见了。但这是一个不同的问题。以上是关于斯威夫特:不知道如何打电话给我的代表的主要内容,如果未能解决你的问题,请参考以下文章