Ios 访问tableView中的项目按钮didSelectRowAtIndexPath swift
我在viewDidLoad中创建了两个UIBarButtonim按钮,将它们分组在导航栏的右侧,这样当满足某些条件时,一个将被启用,另一个将被禁用,反之亦然 除了识别条件并根据条件启用和禁用外,按钮工作正常Ios 访问tableView中的项目按钮didSelectRowAtIndexPath swift,ios,swift,uitableview,Ios,Swift,Uitableview,我在viewDidLoad中创建了两个UIBarButtonim按钮,将它们分组在导航栏的右侧,这样当满足某些条件时,一个将被启用,另一个将被禁用,反之亦然 除了识别条件并根据条件启用和禁用外,按钮工作正常 override func viewDidLoad() { super.viewDidLoad() var btnDone: UIBarButtonItem = UIBarButtonItem( barButtonSystemItem: .Done,
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声明为具有延迟初始化的类变量,这意味着它将根据需要创建,使我能够访问所需的按钮(在didSelectRowAtIndexPath内)但现在,当我运行它并转到该视图时,我得到了一个错误致命错误:在展开可选值时意外发现nil错误位于(btnAdd!=UIBarButtonItem(barButtonSystemItem:.Add,target:self,action:“btnAddCustomFunction”)在ViewDidLoad中,当您调用btnDone(btnDone?.enabled=true)时,添加一个?而不是一个!@tew我只是使用惰性初始化创建它,这实际上是您尝试执行的操作的最佳选择。祝您的应用好运!现在错误发生在var按钮=[btnDone,btnAdd]我尝试了你的建议,但它仍然发生。我尝试仅使用self.navigatioBarItem.rightbuttoneim=btnDone使用其中一个按钮like@Icaro.我试着避开第一行,直接使用self.navigationBar.rightbuttoniems=[btnDone,btnAdd]使用“!”和“?”的组合以及相同的错误。似乎它与“RightBarButtonims”捆绑在一起@Icaro建议的惰性初始化有效。谢谢。