我尝试使用 Swift 2 创建基于页面的导航观看应用。 我的应用程序如下:
对于这两个接口,我都有名为 InterfaceController和EconomyInterfaceController 的唯一控制器。
在每个控制器中,我通过控制器 init()功能
中的函数读取了一些JSON数据func setFeed(url: String) {
let session = NSURLSession(configuration: NSURLSessionConfiguration.defaultSessionConfiguration())
let request = NSURLRequest(URL: NSURL(string: url)!)
let task: NSURLSessionDataTask = session.dataTaskWithRequest(request) { (data, response, error) -> Void in
if let data = data {
do {
let _data: AnyObject? = try NSJSONSerialization.JSONObjectWithData(data, options: .AllowFragments)
if let items = _data!["data"] as? NSArray{
self.tableOutlet.setNumberOfRows(items.count, withRowType: "row")
for (index, item) in items.enumerate() {
if let title = self.JSONString(item["title"]) {
if let spot = self.JSONString((item["spot"])) {
let news = newsItem(title: title, spot: spot)
let row = self.tableOutlet!.rowControllerAtIndex(index) as? RowController
row!.rowLabel!.setText(news.title) }
}
}
}
} catch {
}
}
}
task.resume()
}
据我所知,这不是 HTTP 请求的最佳方式,因为所有请求都在主线程和应用启动时运行。这不是我的主要问题,但如果你有任何报价,我不能拒绝:)
我的主要问题是,如果我在 willActivate()方法中调用 setFeed()方法,并使用
设置表格标签row!.rowLabel!.setText(news.title)
我的应用有效,但这不是一个好选择,因为每次更改页面时都会反复更新内容。
如果我在 init()方法中调用 setFeed()方法并使用
设置表格标签row!.rowLabel!.setText(news.title)
仅显示应用的第一页,而其他页面未显示。这有什么不对?