Luk*_*kas 1 delegates protocols ios uicontainerview swift
我知道这个问题已经在论坛中存在,但我不知道为什么我的代表不起作用。顺便说一下,我是第一次和他们一起工作。
这是代码
视图控制器:
class ViewController: UIViewController, ContainerViewControllerDelegate{
override func viewDidLoad() {
super.viewDidLoad()
let controller = ContainerViewController()
controller.containerDelegate = self
}
func didScrollChangeAppearanceBarButtonItem(change: Bool) {
if(change == true){
print("true")
}else{
print("false")
}
}
}
Run Code Online (Sandbox Code Playgroud)
容器视图:
protocol ContainerViewControllerDelegate {
func didScrollChangeAppearanceBarButtonItem(change: Bool)
}
class ContainerViewController: UIViewController, UIScrollViewDelegate{
var containerDelegate: ContainerViewControllerDelegate?
func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
if(velocity.y>0) {
containerDelegate?.didScrollChangeAppearanceBarButtonItem(change: false)
print("1")
} else {
containerDelegate?.didScrollChangeAppearanceBarButtonItem(change: true)
print("2")
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想做的事情:当我滚动时,我想向我的 ViewController 发送一个布尔值。当 bool == true 时我想做某事,当 bool == false 时我想做别的事。
我希望有人能帮助我:)
而不是这个:
let controller = ContainerViewController()
controller.containerDelegate = self
Run Code Online (Sandbox Code Playgroud)
在 viewDidLoad() 外部创建变量:
var controller:ContainerViewController!
override func viewDidLoad() {
super.viewDidLoad()
controller = ContainerViewController()
controller.containerDelegate = self
}
Run Code Online (Sandbox Code Playgroud)
原因是,一旦 viewDidLoad 函数到达末尾,在 viewDidLoad 内初始化的控制器就会被释放。
编辑
我将详细说明,如果您尝试通过 segue 访问其他视图控制器,这是错误的方式。相反,这样做:
self.performSegueWithIdentifier("your identifier", sender: self)
Run Code Online (Sandbox Code Playgroud)
然后添加一个函数:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (segue.identifier == "Your identifier") {
guard let controller = segue.destination as? ContainerViewController else { return }
controller.delegate = self
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
637 次 |
| 最近记录: |