gpt4 book ai didi

ios - 访问 tableView 内的 UIBarBarItem 按钮 didSelectRowAtIndexPath swift

转载 作者:行者123 更新时间:2023-11-30 14:18:54 25 4
gpt4 key购买 nike

我在 viewDidLoad 中创建了两个 UIBarButtonItem 按钮,将其分组在导航栏的右侧,这样当满足特定条件时,一个将被启用,另一个将被禁用,反之亦然。

除了识别条件并根据条件启用和禁用之外,按钮工作正常。

override func viewDidLoad() {
super.viewDidLoad()
var btnDone: UIBarButtonItem = UIBarButtonItem(
barButtonSystemItem: .Done,
target: self,
action: "btnDoneFunction")
btnDone.style = UIBarButtonItemStyle.Done
let btnAdd: UIBarButtonItem = UIBarButtonItem(
barButtonSystemItem: .Add,
target: self,
action: "btnAddFunction")
var buttons = [btnAdd, btnDone]
self.navigationItem.rightBarButtonItems = buttons
if checked.count >= 1 {
btnDone.enabled = true
btnAdd.enabled = false
} else {
btnDone.enabled = false
btnAdd.enabled = true
}
}

checked 是一个数组,保存 didSelectRowAtIndexPath 内表中已检查行的行号。

我尝试移动条件部分:

 if checked.count >= 1 {
btnDone.enabled = true
btnAdd.enabled = false
} else {
btnDone.enabled = false
btnAdd.enabled = true
}

在 didSelectRowAtIndexPath 内部,但我无法访问那里的按钮。

有什么办法可以实现这个吗?我只想检查表中是否检查了任何行并禁用“添加”按钮并启用“完成”按钮。如果没有检查任何行,则相反。

这是在 UITableViewController 类内部。

最佳答案

您正在 viewDidLoad 中创建按钮,因此变量的范围仅适用于该函数,您需要在类中声明它。

class myClass{

lazy var btnDone:UIBarButtonItem = {
var done: UIBarButtonItem = UIBarButtonItem(
barButtonSystemItem: .Done,
target: self,
action: "btnDoneFunction")
return done
}()

func anotherFunc(){
if checked.count >= 1 {
btnDone?.enabled = true
} else {
btnDone?.enabled = false
}
}
}

我在上面创建了一个通用示例,它将 btnDone 声明为具有延迟初始化的类变量,这意味着它将根据需要创建

关于ios - 访问 tableView 内的 UIBarBarItem 按钮 didSelectRowAtIndexPath swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30745320/

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