Swift 如何在嵌入式tableView上实现编辑/删除行为?
因此,我有一个嵌入式tableview,我想实现编辑/删除行为: 在我的HomePageViewController中,我有:Swift 如何在嵌入式tableView上实现编辑/删除行为?,swift,uitableview,Swift,Uitableview,因此,我有一个嵌入式tableview,我想实现编辑/删除行为: 在我的HomePageViewController中,我有: override func viewDidLoad() { super.viewDidLoad() navigationItem.leftBarButtonItem = editButtonItem } 然而,当我点击编辑按钮时,它会显示done,而嵌入的tableview则什么都不做。当我把上面的代码放到tableview中时,什么都没有发生 如何让
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.leftBarButtonItem = editButtonItem
}
然而,当我点击编辑按钮时,它会显示done,而嵌入的tableview则什么都不做。当我把上面的代码放到tableview中时,什么都没有发生
如何让导航控制器/父视图控制器识别嵌入的表视图?看起来您正在使用嵌入序列嵌入UITableViewController。在父视图控制器中,您可以轻松完成以下两件事情中的一件来实现目标 方法1:使用子视图控制器的“编辑”按钮 方法2:将编辑事件转发到子视图控制器
注意:
editButtonItem
在iOS 10中公开(但更早)。对于小于iOS 10的部署目标,可以结合使用方法2使用自定义编辑按钮。在这种情况下,不能使用编辑按钮的自动行为。这取决于你自己去实现它。您需要切换表视图的i编辑
,以及按钮的外观。以下是我自己的一个应用程序的示例:
func doEdit(_ sender: Any?) {
var which : UIBarButtonSystemItem
if !self.tableView.isEditing {
self.tableView.setEditing(true, animated:true)
which = .done
} else {
self.tableView.setEditing(false, animated:true)
which = .edit
}
let b = UIBarButtonItem(barButtonSystemItem: which,
target: self, action: #selector(doEdit))
self.navigationItem.rightBarButtonItem = b
}
我猜“childTabBarControllers”是指“childControllers”吗。但这起作用了——谢谢!是的,这是一个人工制品的变形我的实现,以适应您的情况。我把它修好了。方法1也很好,但是谢谢你把这两种方法都包括进来。是的,方法1非常干净,清楚发生了什么。对于否决这个问题的人,我希望得到一些反馈。
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.leftBarButtonItem = editButtonItem
}
override func setEditing(_ editing: Bool, animated: Bool) {
super.setEditing(editing, animated: animated)
// Forward editing state to children
childViewControllers.forEach { $0.setEditing(editing, animated: animated) }
}
func doEdit(_ sender: Any?) {
var which : UIBarButtonSystemItem
if !self.tableView.isEditing {
self.tableView.setEditing(true, animated:true)
which = .done
} else {
self.tableView.setEditing(false, animated:true)
which = .edit
}
let b = UIBarButtonItem(barButtonSystemItem: which,
target: self, action: #selector(doEdit))
self.navigationItem.rightBarButtonItem = b
}