如何在tableview中创建具有多个字段的单元格?

时间:2014-11-18 19:36:04

标签: ios swift

我想和不同的人一起制作一张桌面视图。您可以通过单击“添加”按钮来添加人员。点击添加按钮后,您需要填写信息'名字','姓氏'和'日期'。单击完成按钮后,它将返回到tableview,单元格将显示人员名字。

我创建了一个新的swift文件,它有一个struct:

struct person {
   var firstName : String
   var lastName : String
   var date : String
}

在tabledetailviewcontroller.swift(你添加一个人的控制器)中,我为每个字段声明了IBOutlets并设置了每个值:

@IBOutlet weak var firstName: UITextField!
@IBOutlet weak var lastName: UITextField!
@IBOutlet weak var dateText: UITextField!

let first:String = ""
let last:String = ""
let date = NSDateFormatter.localizedStringFromDate(NSDate(), dateStyle: .MediumStyle, timeStyle: .ShortStyle)

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
    if segue.identifier == "doneSegue" {
        first = firstName.text
        last = lastName.text
        date = dateText.text
    }
}

在tableviewcontroller.swift中,我已经声明了一个类型为' person'的人数组:

var people = [person]()

和一个返回数组中人数的函数。

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
   return people.count
}

然后我有一个设置单元格文本值的函数 override func tableView(tableView:UITableView,cellForRowAtIndexPath indexPath:NSIndexPath) - >

UITableViewCell {
   let cell = tableView.dequeueReusableCellWithIdentifier("issueCell", forIndexPath: indexPath) as UITableViewCell

   //cell.textLabel.text = issues.dateTime[indexPath.row] //Fixed this to this =>
   cell.textLabel.text = (issues[indexPath.row]).dateTime

   return cell
}

最后我有一个完成按钮,将新人追加到数组中(这部分一直给我错误......)

@IBAction func done(segue:UIStoryboardSegue){
        var addPersonVC = segue.sourceViewController as AddPersonViewController
        let newPerson = person(date: (addPersonVC.date)) //Breaks here for no reason!

        people.append(newPerson)
    }

我的问题是,如何让每个单元格存储多个字段(第一个,最后一个,日期),将其保存在每个人的下方,并在桌面视图的单元格中显示该人的姓名?我希望能够编辑单元格并更改有关该人的信息。

我对swift很新:/ 我非常感谢!

编辑:我已经解决了一些问题,现在它已经完成了功能!

1 个答案:

答案 0 :(得分:1)

如果我没有错或缺少某些代码,则会出现两个错误:

  1. 你的结构被称为“人”(小p),但是你实例化了新的Person with Person(date:(addPersonVC.date))
  2. 如果使用let声明结构的属性,则需要在初始化中定义它们,因为它们是常量。否则你必须将它们称为var