reloadData()不在快速工作
所以,我有麻烦 - 无法重新装载TableView的数据,在命令行我看到好数据 - 当我点击按钮idMeet
被更改,但在模拟器中我看不到刷新点击按钮后的表格视图,并且idMeet
已更改,我的查询也已更改。我明白我必须使用tableView.reloadData()
,但不明白在哪里编写正确的工作?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
}
有几个问题在这里:
-
的
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
,并实施适当的方法。在没有看到这些方法的情况下,我们无法确定是否会出现更多问题。
通常当tableView数据数组发生变化时,tableView应该重新加载。在这种情况下,在按钮操作方法的末尾重新加载tableview。
@IBAction func act(sender: UIButton) {
x = !x
getInfo()
tbRouteData.reloadData()
}
不工作,的tableView不重装。在模拟器中,我看到idMeet = 1时的信息,但是idMeet = 2(它在命令行中看到) –
func getTmp(){
infoTmp = NSMutableArray()
infoTmp = getInfo()
tbRouteData.reloadData()
}
编写代码和阵列填满
谢谢,但它不工作,tableView没有重新加载。在模拟器中,我看到了idMeet = 1时的信息,但是idMeet = 2(它在命令行中看到) –
你是否曾经看到过tableVIew中的数据?你有链接数据源和数据代表吗? tableView方法是否被调用? – Russell
不,我没有在tableView中看到新的数据。点击按钮后,我看到“idMeet”被改变,但tableView中的数据没有改变。是的,数据源和数据代表已链接。 –
重装数据应该在按钮中,但如果是getinfo()之后一直完成后,这将重新加载新的数据你的tableview完成。下面应该工作:
@IBAction func act(sender: UIButton) {
x = !x
getInfo()
tbRouteData.reloadData()
}
谢谢,但它不工作,tableView不重新加载。在模拟器中,我看到idMeet = 1时的信息,但idMeet = 2(它在命令行中看到) –
您是否能够打印新数据以确保其正确填充?它可能是正确刷新,但数据没有改变 –
所以,点击后,我从数据库的命令行中获得新的数据,我会搜索我的新数据不想重新加载。这是第一次,因为在下一个VC我没有这样的问题.. –
有在你的代码 – Sulthan
没有重装我问哪里重载必须 –