所以,我有麻烦-无法重新加载table view的数据,在命令行中我看到好的数据-当我单击按钮时idMeet被更改,但是在模拟器中,单击按钮后我看不到刷新table view,并且idMeet被更改,我的查询也被更改。我知道我必须使用tableView.reloadData(),但不知道在哪里写才能正确工作?

    var x = true;

        @IBOutlet weak var myButton: UIButton!
        @IBOutlet var tbRouteData: UITableView!
        @IBAction func act(sender: UIButton) {
            x = !x
            getInfo()
        }

        override func viewDidLoad() {
            super.viewDidLoad()
        }

        override func viewWillAppear(animated: Bool) {
            self.getTmp()
        }

        func getInfo() -> NSMutableArray {
            sharedInstance.database!.open()
         var idMeet: Int
         if x {
                idMeet = 1
            } else {
                idMeet = 2
            }

            print(idroute)

            let selectInfo: FMResultSet! = sharedInstance.database!.executeQuery("SELECT * FROM t1 AS one JOIN t2 AS two ON (one.id = two.id AND two.line_id = ?) ORDER BY two.position ASC", withArgumentsInArray: [idMeet])
    ...
            return tmp
        }

    func getTmp(){

        infoTmp = NSMutableArray()
        infoTmp = getInfo()
    }


    // MARK: - Table view data source

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

        return infoTmp.count
    }

 override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

        let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! PrivateCell

        let my:Info = infoTmp.objectAtIndex(indexPath.row) as! Info
        cell.listOfStop.text = my.Name.uppercaseString
        return cell
    }

最佳答案

这里有几个问题:
getTmp函数应重新加载数据:

func getTmp(){
    infoTmp = getInfo()
    tbRouteData.reloadData()
}

既然有了填充属性并重新加载表的函数,act应该调用它,而不是getInfo
@IBAction func act(sender: UIButton) {
    x = !x
    getTmp()
}

当您调用getInfo时,不会设置infoTmp。通过调用getTmpinfoTmp的总体集中并在一个位置重新加载表。
如果在表视图中没有看到任何数据,请确保相应地设置了表视图的delegate。您可以在IB中或以编程方式执行此操作:
override func viewDidLoad() {
    super.viewDidLoad()
    tbRouteData.delegate = self
}

当然,这假设您将视图控制器定义为符合UITableViewDataSource并实现了适当的方法。如果看不到这些方法,我们就无法判断是否还有进一步的问题。

10-05 23:18