我有一个UITableView子视图,应显示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更改为子视图。 dataSource可能不正确吗?
答案 0 :(得分:0)
我不确定之前的情况是什么,但我假设您的控制器是UITableViewController
。在这种情况下,控制器的主视图是UITableView
。但是,当您切换到UIViewController
并以编程方式添加UITableView
时,您需要确保UITableView
位于视图层次结构的前面。尝试使用
self.view.insertSubview(lobbyView, 0)
而不是
self.view.addSubview(lobbyView)