TableView不显示数据

我正在尝试填写UITableView从GET请求中收到的一些数据。我不知道为什么,但是如果在我的中numberOfRowsInSection,我返回一个特定的值(例如8),它表示信息。如果y返回请求填充的数组的值,UITableView则不添加任何行:

class DashboardTableViewController: UITableViewController {

var userData = [String]()

var secondUserData = [String]()

var name: String = ""

override func viewDidLoad() {

super.viewDidLoad()

}

override func viewWillAppear(_ animated: Bool) {

super.viewWillAppear(animated)

}

/* This function gets the user account information from a JSON in a simple request */

private func loadUserData(completion: @escaping (_ myArray: [String]) -> Void) {

let session = Twitter.sharedInstance().sessionStore.session()

let client = TWTRAPIClient.withCurrentUser()

let userInfoURL = "https://api.twitter.com/1.1/users/show.json"

let params = ["user_id": session?.userID]

var clientError : NSError?

let request = client.urlRequest(withMethod: "GET", url: userInfoURL, parameters: params, error: &clientError)

client.sendTwitterRequest(request) { (response, data, connectionError) -> Void in

if connectionError != nil {

print("Error: \(connectionError)")

}

do {

let json = JSON(data: data!)

if let userName = json["name"].string,

let description = json["description"].string,

let followersCount = json["followers_count"].int,

let favouritesCount = json["favourites_count"].int,

let followingCount = json["friends_count"].int,

let lang = json["lang"].string,

let nickname = json["screen_name"].string {

self.userData.append(userName)

self.userData.append(nickname)

self.userData.append(String(followersCount))

self.userData.append(String(followingCount))

self.userData.append(String("22"))

self.userData.append(lang)

self.userData.append(description)

self.userData.append("No country")

completion(self.userData)

}

}

}

}

/* This closure helps us to fill the labels once the request has been finished in loadUserData */

func manageUserData(label: UILabel, index: Int) {

loadUserData {

(result: [String]) in

label.text = result[index]

}

}

// MARK: - Table view data source

override func numberOfSections(in tableView: UITableView) -> Int {

// #warning Incomplete implementation, return the number of sections

return 1

}

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

// #warning Incomplete implementation, return the number of rows

return self.userData.count

}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

let rowNumber = indexPath.row

let cellIdentifier = "TableViewCell"

guard let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as? TableViewCellController else {

fatalError("The dequeued cell is not an instance of TableViewCellController.")

}

switch rowNumber {

case 0:

cell.titlePlaceholder.text = "Name:"

manageUserData(label: cell.valuePlaceholder, index: rowNumber)

case 1:

cell.titlePlaceholder.text = "Nickname:"

manageUserData(label: cell.valuePlaceholder, index: rowNumber)

case 2:

cell.titlePlaceholder.text = "Followers:"

manageUserData(label: cell.valuePlaceholder, index: rowNumber)

case 3:

cell.titlePlaceholder.text = "Following:"

manageUserData(label: cell.valuePlaceholder, index: rowNumber)

case 4:

cell.titlePlaceholder.text = "Tweets:"

manageUserData(label: cell.valuePlaceholder, index: rowNumber)

case 5:

cell.titlePlaceholder.text = "Language:"

manageUserData(label: cell.valuePlaceholder, index: rowNumber)

case 6:

cell.titlePlaceholder.text = "Biography:"

manageUserData(label: cell.valuePlaceholder, index: rowNumber)

case 7:

cell.titlePlaceholder.text = "Country:"

manageUserData(label: cell.valuePlaceholder, index: rowNumber)

default:

cell.titlePlaceholder.text = "?"

cell.valuePlaceholder.text = "?"

}

return cell

}

}

知道为什么会这样吗?非常感谢你!!

我解决了这个问题,在loadUserData()函数内的complete()之后添加了self.tableView.reloadData()。希望能帮助到你!

回答:

快速解决方案:

tableView.reloadData()

如果不是从主线程调用它:

DispatchQueue.main.async {

self.tableView.reloadData()

}

以上是 TableView不显示数据 的全部内容, 来源链接: utcz.com/qa/401332.html

回到顶部