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 = selfself.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 的引用。

同时,您必须更新您的dataSourcetableview

【讨论】:

所以,我添加了self.tableView.reloadData(),对吗? let selfClass = tineraryViewontroller() 的目的是要再次调用自己。 从你发的代码中,我无法判断self是不是ItineraryViewontroller,如果是,你可以试试。 抱歉信息缺失。我已经厌倦了添加self.tableView.reloadData(),但它不起作用。 你忘了更新你的dataSource,在清空DB数据的时候,你还需要清空你的tableview dataSource的数据。 不客气。我会更新答案,让遇到这个问题的其他人知道会发生什么

以上是关于Swift:在警报视图中按下按钮后,tableView 不会重新加载数据的主要内容,如果未能解决你的问题,请参考以下文章

swift 3 在tableView 中按下了哪个单元格按钮

在 Swift 中按下 uibutton 时更改色调图像颜色

在位置访问权限中按下允许按钮后如何执行操作?

如何在swift中按下按钮从另一个xib文件加载另一个xib文件

在android中按下后退按钮后如何返回相同的选项卡?

在 Swift 中按“使用照片”后如何进入下一个屏幕?