reloadData()不在快速工作

reloadData()不在快速工作

问题描述:

所以,我有麻烦 - 无法重新装载TableView的数据,在命令行我看到好数据 - 当我点击按钮idMeet被更改,但在模拟器中我看不到刷新点击按钮后的表格视图,并且idMeet已更改,我的查询也已更改。我明白我必须使用tableView.reloadData(),但不明白在哪里编写正确的工作?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 
    } 
+1

有在你的代码 – Sulthan

+0

没有重装我问哪里重载必须 –

有几个问题在这里:

  1. getTmp功能应该重新加载数据:

    func getTmp(){ 
        infoTmp = getInfo() 
        tbRouteData.reloadData() 
    } 
    
  2. 现在你有一个功能,填充财产和重新加载表,act应该调用,而不是getInfo

    @IBAction func act(sender: UIButton) { 
        x = !x 
        getTmp() 
    } 
    

    当您拨打getInfo时,不会设置infoTmp。并致电getTmp,集中了infoTmp的人口并重新装载在一个地方。

  3. 如果您在表格视图中没有看到任何数据,请确保您已相应地设置了表格视图的delegate。你可以做到这一点无论是在IB,或编程:

    override func viewDidLoad() { 
        super.viewDidLoad() 
        tbRouteData.delegate = self 
    } 
    

    这是假设,当然,前提是你定义您的视图控制器符合UITableViewDataSource,并实施适当的方法。在没有看到这些方法的情况下,我们无法确定是否会出现更多问题。

通常当tableView数据数组发生变化时,tableView应该重新加载。在这种情况下,在按钮操作方法的末尾重新加载tableview。

@IBAction func act(sender: UIButton) { 
     x = !x 
     getInfo() 
     tbRouteData.reloadData() 
} 
+0

不工作,的tableView不重装。在模拟器中,我看到idMeet = 1时的信息,但是idMeet = 2(它在命令行中看到) –

func getTmp(){ 

     infoTmp = NSMutableArray() 
     infoTmp = getInfo() 
     tbRouteData.reloadData() 
    } 

编写代码和阵列填满

+0

谢谢,但它不工作,tableView没有重新加载。在模拟器中,我看到了idMeet = 1时的信息,但是idMeet = 2(它在命令行中看到) –

+0

你是否曾经看到过tableVIew中的数据?你有链接数据源和数据代表吗? tableView方法是否被调用? – Russell

+0

不,我没有在tableView中看到新的数据。点击按钮后,我看到“idMeet”被改变,但tableView中的数据没有改变。是的,数据源和数据代表已链接。 –

重装数据应该在按钮中,但如果是getinfo()之后一直完成后,这将重新加载新的数据你的tableview完成。下面应该工作:

@IBAction func act(sender: UIButton) { 
     x = !x 
     getInfo() 
     tbRouteData.reloadData() 
    } 
+0

谢谢,但它不工作,tableView不重新加载。在模拟器中,我看到idMeet = 1时的信息,但idMeet = 2(它在命令行中看到) –

+0

您是否能够打印新数据以确保其正确填充?它可能是正确刷新,但数据没有改变 –

+0

所以,点击后,我从数据库的命令行中获得新的数据,我会搜索我的新数据不想重新加载。这是第一次,因为在下一个VC我没有这样的问题.. –