Swift:UITableView不会使用reloadData进行更新

时间:2015-07-28 06:05:39

标签: ios iphone swift uitableview

我有一个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可能不正确吗?

1 个答案:

答案 0 :(得分:0)

我不确定之前的情况是什么,但我假设您的控制器是UITableViewController。在这种情况下,控制器的主视图是UITableView。但是,当您切换到UIViewController并以编程方式添加UITableView时,您需要确保UITableView位于视图层次结构的前面。尝试使用

self.view.insertSubview(lobbyView, 0)

而不是

self.view.addSubview(lobbyView)