我正在尝试将大部分代码移动到另一个文件;我相信我已经这样做了,但是,我在调用函数时遇到了问题。
我有两个文件:
scannerBrain.swift
var parentView = UIViewController()
func startScan(){
//The code I want to execute is here
}
scannerViewController.swift
let scanner = scannerBrain()
scanner.parentView = self
let rightButton = UIBarButtonItem(barButtonSystemItem: .add, target: scanner, action: #selector(scanner.startScan))
navigationItem.rightBarButtonItem = rightButton
这个编译很好,除了 startScan
从未被调用。我尝试将 rightButton
的目标更改为 self
,但这导致了 unrecognised selector sent to instance
感谢任何帮助
最佳答案
scanner
应该是类级别的属性,否则会被释放。像这样。
class TestViewController: UIViewController {
let scanner = scannerBrain()
override func viewDidLoad() {
super.viewDidLoad()
scanner.parentView = self
let rightButton = UIBarButtonItem(barButtonSystemItem: .add, target: scanner, action: #selector(scanner.startScan))
navigationItem.rightBarButtonItem = rightButton
}
}
关于ios - 点击时 UIBarButtonItem 不调用另一个类中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45125869/