use*_*075 6 cocoa-touch delegates ios swift
我的第一个控制器--ViewController
class ViewController: UIViewController,testProtocol {
@IBAction func btInit(sender: AnyObject) {
println("Bt Init")
let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let initViewController: UIViewController = storyBoard.instantiateViewControllerWithIdentifier("viewTarget") as targetViewController
self.presentViewController(initViewController,animated: false, nil)
}
var targetController = targetViewController();
override func viewDidLoad() {
super.viewDidLoad()
self.targetController.delegate = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func testDelegate(){
println(" in my view controller delegate ")
}
}
Run Code Online (Sandbox Code Playgroud)
在我的第二个视图控制器 - targetViewController
protocol testProtocol {
func testDelegate() // this function the first controllers
}
class targetViewController: UIViewController {
@IBAction func BtTarget(sender: AnyObject) {
println("bt target pressed")
delegate?.testDelegate()
}
var delegate : testProtocol?
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func testDelegate(){
println(" in my target view controller delegate ")
}
}
Run Code Online (Sandbox Code Playgroud)
为什么testDelegate()从未在ViewController上调用过?我究竟做错了什么?谢谢.
我已经阅读了很多关于此的帖子,但所有的例子都是通过segue过渡给出的,我不想使用segue.
tre*_*orj 11
通常,您在中设置新的视图控制器的委托属性prepareForSegue:.你说你没有使用segue,所以你需要实例化第二个视图控制器并以某种方式呈现它.您可以通过执行以下操作来执行此操作:
let storyboard = UIStoryboard(name: "AStoryboardName", bundle: nil)
let secondVC = storyboard.instantiateViewControllerWithIdentifier(anIdentifier) as! targetViewController
secondVC.delegate = self
presentViewController(secondVC, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)
您testDelegate()在两个视图控制器中都有一个方法,但您只需要在第一个视图控制器中.然后你的第二个视图控制器可以delegate?.testDelegate()在适当的时候调用.
最后,您通常希望将委托属性设置为弱,因此我建议您更改var delegate : testProtocol?为weak var delegate: testProtocol?
我会读一下代表团.这是一个相对简单的5步授权过程,可以帮助您:
5个步骤的代表团:
对象A是对象B的委托,对象B将发送消息:
| 归档时间: |
|
| 查看次数: |
12631 次 |
| 最近记录: |