gpt4 book ai didi

ios - 模拟器 iPhone X 系列 - 不断收到崩溃无法识别的选择器发送到所有按钮的实例

转载 作者:行者123 更新时间:2023-11-28 10:30:03 25 4
gpt4 key购买 nike

我在 Xcode 10.1 上,模拟器也是 10.1 版,但它也发生在去年的旧版本上。我没有理会它,因为我正在构建基本的用户界面和后端,所以我跳过了它。现在我几乎准备好发布了,现在我需要在 X 系列上进行测试。

每当我使用 任何其他常规模拟器 来自 5S - 8+ 的 iPhone 时,都没有问题,一切正常,我触摸一个按钮, Action 就会发生。我有一部 iPhone 7+,使用实际的设备时按钮工作正常

但每当我使用模拟器并选择任何iPhone X系列设备时,当我触摸any中的any按钮时 View Controller 我总是崩溃

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[_UIBackButtonContainerView titleLabel]: unrecognized selector sent to instance 0x7fdd99c759e0'

无论这是什么导致了 X 系列的问题 [_UIBackButtonContainerView titleLabel]

我在 Debug模式下运行 Xcode:

enter image description here

可能是什么问题?

enter image description here

代码-

lazy var loginButton: UIButton = {
let button = UIButton(type: .system)
button.translatesAutoresizingMaskIntoConstraints = false
button.setTitle("Login", for: .normal)
button.setTitleColor(UIColor.white, for: .normal)
button.titleLabel?.font = UIFont(name: "ArialRoundedMTBold", size: 19)
// I also tried commenting out button.titleLabel?.font = UIFont(name: "ArialRoundedMTBold", size: 19)
button.backgroundColor = UIColor.lightGray
button.addTarget(self, action: #selector(loginButtonPressed), for: .touchUpInside)
button.clipsToBounds = true
button.layer.cornerRadius = 5
}()

@objc func loginButtonPressed() {
// do something
}

override func viewDidLoad() {
super.viewDidLoad()

// there is a username textfield and a password textField above the button

view.addSubview(loginButton)

loginButton.topAnchor.constraint(equalTo: passwordTextField.bottomAnchor, constant: 8).isActive = true
loginButton.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor, constant: 16).isActive = true
loginButton.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor, constant: -16).isActive = true

if UIScreen.main.bounds.width == 320 {

loginButton.heightAnchor.constraint(equalToConstant: 40).isActive = true
} else {

loginButton.heightAnchor.constraint(equalToConstant: 45).isActive = true
}
}

这是按钮的图片,在操作中只有一条打印语句:

enter image description here

这是崩溃的图片:

enter image description here

enter image description here

最佳答案

我能够通过@matt 在评论中发表评论来缩小错误范围,他说 I'm having quite a lot of trouble understanding what any of the code you've shown could possibly have to do with UIBackButtonContainerView. It seems to me we want to be looking at your back button, not this loginButton .当他说我查看了代码的其他部分时。

这个有问题的 LoginVC 是 root vc而且我里面没有任何 barButtonItem 但是我使用下面的这行代码来隐藏 backBarButton 中的文本vc 中被推到的项目,因此它只会显示一个后退箭头。

这是在推送的父 vc 中:

// LoginVC with loginButton inside of it
navigationItem.backBarButtonItem = UIBarButtonItem(title: nil, style: .plain, target: nil, action: nil)

这是在被推送的子 vc 中:

// child vc that’s getting pushed on
if view.frame.width == 414 && view.frame.height == 896 || view.frame.width == 375 && view.frame.height == 812 {

navigationController?.navigationBar.prefersLargeTitles = true
} else {

navigationController?.navigationBar.prefersLargeTitles = false
}

我不知道为什么我可以在 iPhone 5、6、7 和 8 系列而不是 X 系列上使用它。当我评论它时,它起作用了。

为了使其正常工作并仍然隐藏下一个 vc 中的文本,我必须将代码更改为:

navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)

区别在于 title:参数。

当它不起作用时,我将参数设置为 nil .

为了让它工作,我将它设置为空引号:""

很奇怪的问题???

更新 经进一步检查,问题与

有关
navigationController?.navigationBar.prefersLargeTitles = true

看来您不能使用上面的代码并将 backBarButton 标题设置为 nil。我猜 Apple 想确保在使用大型导航栏标题时存在某种文本。

关于ios - 模拟器 iPhone X 系列 - 不断收到崩溃无法识别的选择器发送到所有按钮的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56618541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com