如何从结构加载 UITableView 单元格中的数据
How to load data in UITableView cell from structure
我正在尝试将数据从结构加载到 table 视图单元格,我创建了一个包含三个标签的自定义单元格。我在视图控制器中有三个文本字段和一个添加按钮,当我填充这三个文本字段并按添加时,它会将这三个值存储在一个结构中并重新加载 table 视图的数据。结构在其他文件中。
这是 DataMaster.swift
中的结构代码
struct jobData
{
var CompanyName:Array<String> = ["ram"]
var job:Array<String> = ["shyam"]
var desc:Array<String> = ["dfdf"]
}
addButton 函数的代码
@IBAction func addButtonTapped(sender: AnyObject) {
var company = txtCompName.text
var job = txtJob.text
var description = txtDesc.text
data.CompanyName.append(company)
data.desc.append(description)
data.job.append(job)
self.jobTableView.reloadData()
print(data.CompanyName)
txtCompName.resignFirstResponder()
txtJob.resignFirstResponder()
txtDesc.resignFirstResponder()
}
问题出在这段代码
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath:indexPath) as jobTableViewCell
cell.compLabel.text = data.CompanyName[indexPath.row]
cell.jobLabel.text = data.job[indexPath.row]
cell.descLabel.text = data.desc[indexPath.row]
return cell
}
当它到达此代码以在 table 中加载数据时崩溃
Thread 1:EXC_BREAKPOINT(code=EXC_I386_BPT,subcode=0x0
)
下面是代码。
struct jobData
{
var CompanyName:String!
var job:String!
var desc:String!
}
取数组为var datas = [jobData]()
现在在 Action 方法中
@IBAction func addButtonTapped(sender: AnyObject) {
var company = txtCompName.text
var job = txtJob.text
var description = txtDesc.text
let dataObject = jobData(company: company, job: job, desc: description)
datas.append(dataObject)
self.jobTableView.reloadData()
txtCompName.resignFirstResponder()
txtJob.resignFirstResponder()
txtDesc.resignFirstResponder()
}
现在在 cellForRowAtIndex 方法中
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath:indexPath) as! jobTableViewCell
let data = datas[indexPath.row]
if let companyName = data.CompanyName {
cell.compLabel.text = companyName
}
if let job = data.job {
cell.jobLabel.text = job
}
if let descr = data.desc {
cell.descLabel.text = descr
}
return cell
}
在 numberofRowsInSection 方法中 return datas.count
检查为什么 data.CompanyName 为空并确保所有文本字段都有文本。
我正在尝试将数据从结构加载到 table 视图单元格,我创建了一个包含三个标签的自定义单元格。我在视图控制器中有三个文本字段和一个添加按钮,当我填充这三个文本字段并按添加时,它会将这三个值存储在一个结构中并重新加载 table 视图的数据。结构在其他文件中。
这是 DataMaster.swift
中的结构代码struct jobData
{
var CompanyName:Array<String> = ["ram"]
var job:Array<String> = ["shyam"]
var desc:Array<String> = ["dfdf"]
}
addButton 函数的代码
@IBAction func addButtonTapped(sender: AnyObject) {
var company = txtCompName.text
var job = txtJob.text
var description = txtDesc.text
data.CompanyName.append(company)
data.desc.append(description)
data.job.append(job)
self.jobTableView.reloadData()
print(data.CompanyName)
txtCompName.resignFirstResponder()
txtJob.resignFirstResponder()
txtDesc.resignFirstResponder()
}
问题出在这段代码
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath:indexPath) as jobTableViewCell
cell.compLabel.text = data.CompanyName[indexPath.row]
cell.jobLabel.text = data.job[indexPath.row]
cell.descLabel.text = data.desc[indexPath.row]
return cell
}
当它到达此代码以在 table 中加载数据时崩溃
Thread 1:EXC_BREAKPOINT(code=EXC_I386_BPT,subcode=0x0
)
下面是代码。
struct jobData
{
var CompanyName:String!
var job:String!
var desc:String!
}
取数组为var datas = [jobData]()
现在在 Action 方法中
@IBAction func addButtonTapped(sender: AnyObject) {
var company = txtCompName.text
var job = txtJob.text
var description = txtDesc.text
let dataObject = jobData(company: company, job: job, desc: description)
datas.append(dataObject)
self.jobTableView.reloadData()
txtCompName.resignFirstResponder()
txtJob.resignFirstResponder()
txtDesc.resignFirstResponder()
}
现在在 cellForRowAtIndex 方法中
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath:indexPath) as! jobTableViewCell
let data = datas[indexPath.row]
if let companyName = data.CompanyName {
cell.compLabel.text = companyName
}
if let job = data.job {
cell.jobLabel.text = job
}
if let descr = data.desc {
cell.descLabel.text = descr
}
return cell
}
在 numberofRowsInSection 方法中 return datas.count
检查为什么 data.CompanyName 为空并确保所有文本字段都有文本。