0

我不想做的例子:

var b  = 0

let URL: NSURL = NSURL(string: "[URL to php file]")!
let request:NSMutableURLRequest = NSMutableURLRequest(URL: URL)
request.HTTPMethod = "POST"
request.HTTPBody = bodyData.dataUsingEncoding(NSUTF8StringEncoding)

NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue())
{
    (response, data, error) in
    b = 5
}

func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {
    return b //Return 0
}

我知道在 numberOfRowsInSection 它返回 0 导致 sendAsynchronousRequest 在之后执行,但是有没有办法让 numberOfRowsInSection 函数在 sendAsynchronousRequest 之后执行?或者有没有更好的方法让我的变量在 numberOfRowsInSection 函数之前等于 5?

4

1 回答 1

1

您不想延迟numberOfRows...调用,但您可以tableView.reloadData在收到异步请求中的数据后调用:

NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue())
{
    (response, data, error) in
    b = 5
    self.tableView.reloadData()
}

这将使表视图重新配置自身并numberOfRows...再次调用。

于 2014-11-15T20:59:22.420 回答