gpt4 book ai didi

ios - UIBarButton 项目不可见

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

我有一个UIViewController允许用户通过 UIImagePickerController 选择照片或视频。一旦他们选择其中之一,图像就会被分配给名为 var selectedImage 的属性。 (如果他们选择一个视频,有一种方法可以生成该视频的缩略图)。它按预期工作。

问题是我想处理 2 UIBarButtonItem 的状态s。我想在 selectedImage 时禁用它们是 nil并设置isEnabled一旦有图像。

非常简单,对吧?好吧,问题是最初它加载 UIViewController ,按钮被禁用且可见,然后我从图库中选择一张照片,didFinishPickingMediaWithInfo被调用,在那里,我也调用 handlePost()应该处理按钮状态(启用/禁用)的方法。好吧,由于某种原因,即使 selectedImage 中有一张图像,按钮没有显示(实际上是不可见的,但据我所知, isHidden 没有 UIBarButtonItem

它们仍然处于事件状态,如果我点击它们(尽管没有看到它们),它们就会完成它们的工作。现在的问题是为什么它们不可见?我可以保证Colors.tint有一个值(我在整个应用程序中使用此类,它有效)和 selectedImage有一个值(我设置了一个断点,它调用 handlePost() 方法,遍历该属性有值的第一个 if 语句。但是,我没有看到显示的按钮。问题是为什么?

@IBOutlet weak var clearButton: UIBarButtonItem!
@IBOutlet weak var filterButton: UIBarButtonItem!

var selectedImage: UIImage?

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
handlePost()
}

func handlePost() {
if selectedImage != nil {
clearButton.isEnabled = true
clearButton.tintColor = Colors.tint
filterButton.isEnabled = true
filterButton.tintColor = Colors.tint
shareButton.isEnabled = true
shareButton.backgroundColor = Colors.tint
shareButton.setTitleColor(.white, for: .normal)
}
else {
clearButton.isEnabled = false
clearButton.tintColor = .darkGray
filterButton.isEnabled = false
filterButton.tintColor = .darkGray
shareButton.isEnabled = false
shareButton.backgroundColor = .darkGray
shareButton.setTitleColor(.lightGray, for: .normal)
}
}

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
if let videoUrl = info[UIImagePickerController.InfoKey.mediaURL] as? URL {
if let thumbnail = self.generateThumbnailForImage(videoUrl) {
self.videoUrl = videoUrl
self.photoImageView.image = thumbnail
self.selectedImage = thumbnail
handlePost()
}
}
if let image = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {
selectedImage = image
photoImageView.image = image
handlePost()
}
dismiss(animated: true, completion: nil)
}

最佳答案

正如我在评论中提到的,我不确定问题是什么,因为发生这种情况是没有问题的。但简单的解决方案是删除 UIBarButtonItem 并用 UIButton 替换它们。这成功了,现在他们的行为符合他们应该的方式。

关于ios - UIBarButton 项目不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53012690/

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