我有一个 UITableView subview ,它应该显示 Game Center 名称,但在调用 reloadData() 时不会更新。
初始化tableView和reloadData函数的代码如下:
import UIKit
import QuartzCore
import GameKit
class LobbyViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
var lobbyView: UITableView!
var lobbyTimer = NSTimer()
var bStartOfTimer: Bool = false
var timerTextView: UITextView = UITextView()
//TABLE VIEW
func initTableView() {
lobbyView = UITableView(frame: CGRectMake(20, 150, self.view.frame.width - 40, 2*self.view.frame.height/3), style: UITableViewStyle.Plain)
lobbyView.layer.cornerRadius = 10
lobbyView.registerClass(LobbyViewCell.self, forCellReuseIdentifier: "cell")
//lobbyView.frame = CGRectMake(20, self.view.frame.height/3, self.view.frame.width - 40, self.view.frame.height/3)
lobbyView.delegate = self
lobbyView.dataSource = self
}
override func viewDidLoad() {
super.viewDidLoad()
var background = UIView(frame: self.view.frame)
background.backgroundColor = UIColor(netHex: cs_navy)
self.view.addSubview(background)
addText()
lobbyTimer = NSTimer.scheduledTimerWithTimeInterval(0.02, target: self, selector: Selector("updateTimer"), userInfo: nil, repeats: true)
initTableView()
self.view.addSubview(lobbyView)
}
func update(){
if (lobbyView != nil) {
self.lobbyView.reloadData()
}
}
我拥有所有其他必要的功能,并且 reloadData() 一直在工作,直到我将 tableView 更改为 subview 。数据源可能不正确吗?
最佳答案
我不确定之前的情况是什么,但我假设您的 Controller 是 UITableViewController
。在这种情况下, Controller 的主视图是 UITableView。但是,当您切换到 UIViewController 并以编程方式添加 UITableView 时,您需要确保您的 UITableView 位于 View 层次结构的前面。尝试使用
self.view.insertSubview(lobbyView, 0)
而不是
self.view.addSubview(lobbyView)
关于ios - Swift:UITableView 不使用 reloadData 进行更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31668502/