如何从结构中加载UITableView单元格中的数据

时间:2015-05-12 11:24:58

标签: ios uitableview swift struct

我正在尝试将数据从结构加载到表格视图单元格,我创建了一个带有三个标签的自定义单元格。我在视图控制器中有三个文本字段和一个添加按钮我希望当我填充这三个文本字段并按下添加它将这三个值存储在一个结构中并重新加载表视图的数据。结构在其他文件中。

以下是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
    }

当它到达此代码以加载表中的数据时,它崩溃了 Thread 1:EXC_BREAKPOINT(code=EXC_I386_BPT,subcode=0x0

UI design

1 个答案:

答案 0 :(得分:2)

以下是代码。

struct jobData
{
    var CompanyName:String!
    var job:String!
    var desc:String!
}

将数组作为var datas = [jobData]()

现在处于行动方法

@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方法中的

返回datas.count 检查data.CompanyName为空的原因,并确保所有文本字段都有文本。