2016-02-26 5 views
0

Я извлекаю данные из бэкэнд-сервиса, возвращающего объекты сообщений, и я хочу отображать сообщения в виде таблицы. проблема, с которой я сталкиваюсь, - это задержка между загрузкой представления и получением данных. в настоящее время сообщения отображаются, как только пользователь прокручивает представление таблицы.Отображение данных из задней службы в виде таблицы

override func viewDidLoad() { 
    super.viewDidLoad() 
    print("Message view did load") 
    username = preferences.valueForKey("username") as! String 
    userID = preferences.valueForKey("userID") as! String 

    // Do any additional setup after loading the view. 
    self.tableView.separatorStyle = UITableViewCellSeparatorStyle.None 
    self.tableView.rowHeight = UITableViewAutomaticDimension 

    getUser() 
} 

func getUser(){ 
    let currentUserAccessToken = EVUser.currentUser().accessToken 
    EVUser.fetchWithAccessToken(currentUserAccessToken, block: { (loggedInUser:EVUser!, error:NSError!) -> Void in 
     if (error == nil) { 
      self.user = loggedInUser 
      self.getMessages() 
      print("The user " + loggedInUser.username + " is logged in with valid access token.") 
     } else { 
      print("The user is not logged in: " + error.domain) 
     } 
    }) 

} 

func getMessages(){ 

    let dataStore: EVDataStore = EVDataStore.sharedInstance() as! EVDataStore 

    //Filter item 
    let request:EVFetchRequest = EVFetchRequest(kindOfClass: Message.self) 

    request.predicate = NSPredicate(
     format: "CreatedByName == %@ OR (To == %@ AND CreatedByName == %@)", 
     username, 
     userID, 
     "Admin" 
    ) 
    dataStore.executeFetchRequest(request, block: { (result, error) -> Void in 
     if error == nil{ 
      if result?.count > 0 { 

       for item in result{ 
        print (item) 
        self.globalMessages.append(item as! Message) 
       } 
       self.displayMessages(self.globalMessages) 

      }else{ 
       print("No items found") 
      } 
     }else{ 
      print("Error: \(error)") 
     } 
    }) 
} 


func displayMessages(messages:[Message]){ 
    setupTableView() 
} 


func setupTableView(){ 
    self.tableView.delegate = self; 
    self.tableView.dataSource = self; 
} 

Есть ли способ добавить сообщения в таблицу, как только они появятся?

+1

Я не уверен, если я понял, ты правильно, но, возможно, вызывая tableView.reloadData() решает вашу проблему. – ammerzon

+0

@ammerzon Спасибо, что сделал трюк – Lonergan6275

+0

Я напишу ответ, чтобы вы могли отметить его как правильное – ammerzon

ответ

1

У вас есть несколько вариантов для этого. Ether вы перезагружаете весь вид таблицы или вставляете одну строку.

перегрузочный табличное

tableView.reloadData() 

Вставка строки

tableView.beginUpdates() 
tableView.insertRowsAtIndexPaths([NSIndexPath(forRow: {your message array}.count-1, inSection: 0)], withRowAnimation: .Automatic) 
tableView.endUpdates() 

Для получения дополнительной информации смотрите здесь: Insert new cell into UITableView

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