Swift:在警报视图中按下按钮后,tableView 不会重新加载数据
Posted
技术标签:
【中文标题】Swift:在警报视图中按下按钮后,tableView 不会重新加载数据【英文标题】:Swift: The tableView do not reload data after press button in alert view 【发布时间】:2015-05-04 04:53:25 【问题描述】:我添加了警报视图,让用户可以控制他们可以删除数据库中的所有项目,但表不会再次重新加载数据。
我试过self.tableView.delegate = self
和self.tableView.reloadData()
,但还是不行。
代码如下:
class ItineraryViewontroller: UITableViewController
....
func clearAll()
var clearAlert = UIAlertView()
clearAlert.delegate = self
clearAlert.title = "Clear All"
clearAlert.message = "Do you want to delete ALL events in itinerary?"
clearAlert.addButtonWithTitle("OK")
clearAlert.addButtonWithTitle("Cancel")
clearAlert.show()
func alertView(View: UIAlertView!, clickedButtonAtIndex buttonIndex: Int)
switch buttonIndex
case 0:
NSLog("OK");
self.db.open()
self.db.executeUpdate("DELETE FROM bookmark",withArgumentsInArray: nil)
//self.tableView.delegate = self
//self.tableView.reloadData()
let selfClass = ItineraryViewontroller()
selfClass.tableView.reloadData()
break;
case 1:
NSLog("Cancel");
break;
default:
NSLog("Default");
break;
//Some code here..
...
【问题讨论】:
您是否也设置了self.tableView.datasource = self
?还要在 viewDidLoad 中设置 self.tableView.datasource = self and self.tableView.delegate = self
。
是的,它仍然不适合我
【参考方案1】:
let selfClass = ItineraryViewontroller()
selfClass.tableView.reloadData()
这些行不正确。您创建了一个ItineraryViewontroller
的新实例。
您应该获得用于显示您的 tableview 的 ItineraryViewontroller 的引用。
同时,您必须更新您的dataSource
或tableview
【讨论】:
所以,我添加了self.tableView.reloadData()
,对吗? let selfClass = tineraryViewontroller()
的目的是要再次调用自己。
从你发的代码中,我无法判断self
是不是ItineraryViewontroller
,如果是,你可以试试。
抱歉信息缺失。我已经厌倦了添加self.tableView.reloadData()
,但它不起作用。
你忘了更新你的dataSource
,在清空DB数据的时候,你还需要清空你的tableview dataSource的数据。
不客气。我会更新答案,让遇到这个问题的其他人知道会发生什么以上是关于Swift:在警报视图中按下按钮后,tableView 不会重新加载数据的主要内容,如果未能解决你的问题,请参考以下文章
swift 3 在tableView 中按下了哪个单元格按钮
在 Swift 中按下 uibutton 时更改色调图像颜色