2016-03-15 2 views
-1

Итак, у меня есть проблема - не могу перезагрузитьДата TableView, в командной строке я вижу хорошие данные - при нажатии кнопки idMeet изменено, но в Simulator я не вижу обновления вид таблицы после нажатия кнопки, и idMeet изменен, и мой запрос также изменен. Я понимаю, что я должен использовать tableView.reloadData(), но не понимаю, где писать для правильной работы?reloadData() не работает в swift

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

Есть несколько вопросов здесь:

  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 и внедрили соответствующие методы. Не видя этих методов, мы не можем сказать, может ли быть какая-то дополнительная проблема.

0

Обычно, когда массив данных tableView изменяется, тогда tableView необходимо перезагрузить. В этом случае в конце метода действия кнопки перезагрузите таблицу.

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

не работают, Tableview не перезагружать. В Simulator я вижу информацию о том, когда idMeet = 1, но idMeet = 2 (см. В командной строке) –

1
func getTmp(){ 

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

Написать этот код, и это будет перезагрузить TableView с новыми данными после того, как массив заполняется

+0

спасибо, но он не работает, tableView не перезагружается. В Simulator я вижу информацию о том, когда idMeet = 1, но idMeet = 2 (см. В командной строке) –

+0

ЛИ ВЫ КАКИЕ-ЛИБО см. Данные в таблице? Связали ли вы источник данных и делегат данных? Вызываются ли методы tableView? – Russell

+0

нет, я не вижу новых данных в таблицеView. Я вижу, что «idMeet» изменяется после нажатия кнопки, но данные в таблицеView не изменяются. Да, источник данных и делегат данных были связаны. –

0

перегрузочной данные должны быть завершены в течение кнопки, но после того, как GetInfo() было завершено. Следующие должны работать:

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

спасибо, но он не работает, tableView не перезагружается. В Simulator я вижу информацию о том, когда idMeet = 1, но idMeet = 2 (см. В командной строке) –

+0

Можете ли вы распечатать новые данные, чтобы обеспечить их правильное заполнение?Возможно, что он обновляется корректно, но данные не изменились –

+0

, поэтому после щелчка я получаю новые данные в командной строке из БД, я буду искать, где мои новые данные не хотят перезагружать. Это первый раз, потому что в следующем VC у меня не так проблем .. –

Смежные вопросы