Uitableview tableView.reloadData()不工作
我正在制作一个应用程序来跟踪我的作业,由于某些原因,当我调用reloadData时,它不起作用,一些人已经问过这个问题,但我尝试了这些修复,它们对我不起作用,下面是我添加新作业的文件:Uitableview tableView.reloadData()不工作,uitableview,swift2,reloaddata,Uitableview,Swift2,Reloaddata,我正在制作一个应用程序来跟踪我的作业,由于某些原因,当我调用reloadData时,它不起作用,一些人已经问过这个问题,但我尝试了这些修复,它们对我不起作用,下面是我添加新作业的文件: import UIKit class AddHomework : UIViewController { @IBOutlet weak var HomeworkNameLbl: UILabel! @IBOutlet weak var HomeworkNameTxt: UITextField!
import UIKit
class AddHomework : UIViewController {
@IBOutlet weak var HomeworkNameLbl: UILabel!
@IBOutlet weak var HomeworkNameTxt: UITextField!
@IBOutlet weak var DueDateLbl: UILabel!
@IBOutlet weak var DueDateTxt: UITextField!
@IBOutlet weak var DueTimeLbl: UILabel!
@IBOutlet weak var DueTimeTxt: UITextField!
@IBOutlet weak var AddHomeworkBtn: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
self.hideKeyboardWhenTappedAround()
}
@IBAction func AddHomework(sender: UIButton) {
let HomeworkName = HomeworkNameTxt.text
let DueDate = DueDateTxt.text
let DueTime = DueTimeTxt.text
homeworkTableView().AddObject([DueDate!, DueTime!], HomeworkName: HomeworkName!)
}
func hideKeyboardWhenTappedAround() {5
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard))
view.addGestureRecognizer(tap)
}
func dismissKeyboard() {
view.endEditing(true)
}
}
这是我的tableview所在的文件:
import UIKit
class homeworkTableView: UIViewController, UITableViewDelegate, UITableViewDataSource{
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.reloadData()
}
var homework : [String: [String]] = [
"Spanish Test": ["Aug 12", "12:00 AM", "Spanish"],
"Math Sheet": ["Aug 13", "10:30 PM","Math"],
"Code Thing": ["Aug 11","12:00 AM","Coding"]
]
var titles = [
"Spanish Test", "Math Sheet", "Code Thing"
]
func AddObject(newArray: [String], HomeworkName: String){
titles.append(HomeworkName)
homework.updateValue(newArray, forKey: HomeworkName)
print(homework)
print(titles)
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return titles.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let Cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! CustomCell
Cell.Title.text = titles[indexPath.row]
let currentTitle = titles[indexPath.row]
let current = homework[currentTitle]!
Cell.DueDate.text = "Due Date: \(current[0])"
Cell.Class.text = "Due Time: \(current[1])"
self.tableView.rowHeight = 100.00
return Cell
}
}
整个项目发布在git上,如下所示:
非常感谢您的帮助,谢谢 您需要执行在视图中执行的操作。在视图中加载将显示。viewDidLoad仅在启动时调用,因此尽管更改了数据,但视图从不更改其自身的本地数据,因此在调用reloadData时,它仍然使用旧数据
摘自。以下是一些基于代码的指针 第一:
您只需在
viewDidLoad()
中调用一次-reloadData()
第二:如果要查看所做的更改,必须按以下顺序进行
更新-dataSource
>-reloadData()
从你的代码
func AddObject(newArray: [String], HomeworkName: String){
titles.append(HomeworkName)
homework.updateValue(newArray, forKey: HomeworkName)
// check is changes was made
print(homework)
print(titles)
// reload after updating datasource
self.tableView.reloadData()
}
编辑:
在检查了你的项目后,我必须说你的方法与我的想法不同。。
在viewDidLoad()
中调用-reloadData()
一次是正确的,但问题在于
表数据源
,在文件.swift中更新,更新人:
homeworkTableView().AddObject([DueDate!, DueTime!], HomeworkName: HomeworkName!)
您初始化了homeworkTableView
类,并在该类中添加或追加了数据
但是从navigationController显示homeworkTableView
viewController时,您是
演示新建家庭作业表视图
类(不是更新的家庭作业表视图)
调用self.tableView.reloadData()
说明:
致命错误:在展开可选值时意外发现nil
因为更新期间,self.tableView
为nil
以下是我提出的解决方案:
第一:全球化您的数据源以进行跨类更新,如下所示:
import Foundation
import UIKit
// I just moved your variables outside the class
//
var homework : [String: [String]] = [
"Spanish Test": ["Aug 12", "12:00 AM", "Spanish"],
"Math Sheet": ["Aug 13", "10:30 PM","Math"],
"Code Thing": ["Aug 11","12:00 AM","Coding"]
]
var titles = [
"Spanish Test", "Math Sheet", "Code Thing"
]
class homeworkTableView: UIViewController, UITableViewDelegate, UITableViewDataSource{
...
// codes
...
}
第二:删除
self.tableView.reloadData()
内func AddObject(..
,我以前建议过(不知道您的方法/实现),
比如:
似乎您没有上载带有最新ChangeStack reload()离开ViewDiDLoad()的项目。我已尝试此操作,但似乎不起作用,我将在进入计算机后重试。它显示致命错误:在展开可选值时意外发现nil我知道这通常意味着我的一个值类似于可选值(…)但我想我用!打开了所有这些,我会更新我的git存储库,如果你能看一下,并给我留下一条评论,那将是great@DavidRichardson;太好了!你的回购协议。虽然在git中没有该项目。奇怪的是,由于某种原因,我的回购协议中的所有文件都被删除了,我明天会尝试修复它,但由于某种原因,我有很多一般来说,上传到存储库很麻烦,谢谢你耐心等待我!
func AddObject(newArray: [String], HomeworkName: String){
titles.append(HomeworkName)
homework.updateValue(newArray, forKey: HomeworkName)
// check is changes was made
print(homework)
print(titles)
}