ios - 点击时 UIBarButtonItem 不调用另一个类中的函数

标签 ios swift

我正在尝试将大部分代码移动到另一个文件;我相信我已经这样做了,但是,我在调用函数时遇到了问题。

我有两个文件:

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/

相关文章:

ios - 从路径获取文件内容

ios - 使用指定的初始化时,属性的Objective-C复制属性不起作用

汇编代码中的 iOS 12 错误 swift_getAssociatedTypeWitnessSlowImpl EXC_BAD_ACCESS

ios - 如何使用 Swift 4 和 Alamofire 从 API 获取数据

ios - shouldChangeCharactersInRange 接受单个 '.'

swift - 从不同的 View Controller 按字母顺序对 TableView 内的单元格进行排序

swift - 如何在 Swift 中获取句子中特定关键字之前的单词?

ios - 自 iOS 13 以来的手势混淆

ios - 将图像从 UITabBarController 传递到 subview (Swift)

ios - 如何将另一个语言环境中的时间解析为美国语言环境?