我想要類似於報警應用程序的東西,在其中您不能輕掃刪除行,但仍可以在編輯模式中刪除該行。UITableView禁用滑動刪除,但仍然在編輯模式下刪除?
當註釋掉tableView:commitEditingStyle:forRowAtIndexPath時,我禁用了滑動刪除功能,並且在編輯模式下仍然有刪除按鈕,但是當按下刪除按鈕時會發生什麼情況。什麼被稱爲?
我想要類似於報警應用程序的東西,在其中您不能輕掃刪除行,但仍可以在編輯模式中刪除該行。UITableView禁用滑動刪除,但仍然在編輯模式下刪除?
當註釋掉tableView:commitEditingStyle:forRowAtIndexPath時,我禁用了滑動刪除功能,並且在編輯模式下仍然有刪除按鈕,但是當按下刪除按鈕時會發生什麼情況。什麼被稱爲?
好的,事實證明這很容易。這是我做過什麼來解決這個問題:
Objective-C的
- (UITableViewCellEditingStyle)tableView:(UITableView *)aTableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
// Detemine if it's in editing mode
if (self.tableView.editing)
{
return UITableViewCellEditingStyleDelete;
}
return UITableViewCellEditingStyleNone;
}
斯威夫特2
override func tableView(tableView: UITableView, editingStyleForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCellEditingStyle {
if tableView.editing {
return .Delete
}
return .None
}
斯威夫特3
override func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCellEditingStyle {
if tableView.isEditing {
return .delete
}
return .none
}
您仍需要執行tableView:commitEditingStyle:forRowAtIndexPath:
才能提交刪除。
基本上,您可以啓用或使用方法
- (void)setEditing:(BOOL)editing animated:(BOOL)animated
如果啓用編輯,出現紅色刪除圖標,並要求用戶刪除的構象禁用編輯。如果用戶確認,則代理方法
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
被通知刪除請求。如果您實施此方法,則輕掃以刪除將自動激活。如果你沒有實現這個方法,那麼滑動刪除不是主動的,但是你不能真正刪除該行。因此,據我所知,除非使用一些未公開的私有API,否則無法實現所要求的內容。可能這就是Apple應用程序的實現方式。
我解決了這個由迴歸UITableViewCellEditingStyleDelete中的tableView:editingStyleForRowAtIndexPath:如果它在編輯模式。 – willi 2009-06-09 15:30:37
爲了清楚起見,除非實施tableView:commitEditingStyle:forRowAtIndexPath:
,否則不會啓用輕掃即刪除功能。
在開發過程中,我沒有實現它,因此沒有啓用滑動刪除功能。當然,在完成的應用程序中,它將始終得到實施,否則將不會進行編輯。
斯威夫特版本:
override func tableView(tableView: UITableView, editingStyleForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCellEditingStyle {
if(do something){
return UITableViewCellEditingStyle.Delete or UITableViewCellEditingStyle.Insert
}
return UITableViewCellEditingStyle.None
}
bu然後再次滑動即可刪除。或不? – 2009-06-09 15:41:55