所以,我有麻烦 - 无法重载TableView的数据,在命令行中我看到了好的数据 - 当我点击按钮idMeet
被更改时,但在模拟器中我没有看到点击后的刷新表视图按钮,idMeet
已更改,我的查询也已更改。我知道我必须使用tableView.reloadData()
,但是不明白在哪里写它才能正常工作?
var x = true;
@IBOutlet weak var myButton: UIButton!
@IBOutlet var tbRouteData: UITableView!
@IBAction func act(sender: UIButton) {
x = !x
getInfo()
}
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewWillAppear(animated: Bool) {
self.getTmp()
}
func getInfo() -> NSMutableArray {
sharedInstance.database!.open()
var idMeet: Int
if x {
idMeet = 1
} else {
idMeet = 2
}
print(idroute)
let selectInfo: FMResultSet! = sharedInstance.database!.executeQuery("SELECT * FROM t1 AS one JOIN t2 AS two ON (one.id = two.id AND two.line_id = ?) ORDER BY two.position ASC", withArgumentsInArray: [idMeet])
...
return tmp
}
func getTmp(){
infoTmp = NSMutableArray()
infoTmp = getInfo()
}
// MARK: - Table view data source
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return infoTmp.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! PrivateCell
let my:Info = infoTmp.objectAtIndex(indexPath.row) as! Info
cell.listOfStop.text = my.Name.uppercaseString
return cell
}
答案 0 :(得分:1)
func getTmp(){
infoTmp = NSMutableArray()
infoTmp = getInfo()
tbRouteData.reloadData()
}
编写此代码,这将在数组填满后使用新数据重新加载您的tableview
答案 1 :(得分:1)
这里有一些问题:
getTmp
函数应重新加载数据:
func getTmp(){
infoTmp = getInfo()
tbRouteData.reloadData()
}
现在你有一个填充属性并重新加载表的函数,act
应该调用它,而不是getInfo
:
@IBAction func act(sender: UIButton) {
x = !x
getTmp()
}
当您致电getInfo
时,未设置infoTmp
。通过调用getTmp
来集中infoTmp
的人口并在一个地方重新加载表格。
如果您在表格视图中没有看到任何数据,请确保相应地设置了表格视图的delegate
。您可以在IB中或以编程方式执行此操作:
override func viewDidLoad() {
super.viewDidLoad()
tbRouteData.delegate = self
}
当然,假设您已将视图控制器定义为符合UITableViewDataSource
并已实施适当的方法。如果没有看到这些方法,我们无法判断是否存在某些进一步的问题。
答案 2 :(得分:0)
通常当tableView数据数组被更改时,tableView应该重新加载。在这种情况下,在按钮操作方法结束时重新加载tableview。
@IBAction func act(sender: UIButton) {
x = !x
getInfo()
tbRouteData.reloadData()
}
答案 3 :(得分:0)
重新加载数据应该在按钮内完成,但是在getInfo()完成之后。以下应该有效:
@IBAction func act(sender: UIButton) {
x = !x
getInfo()
tbRouteData.reloadData()
}