首页 文章

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

提问于
浏览
0

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

我创建了一个具有结构的新swift文件:

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
}

然后我有一个函数,设置单元格覆盖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)
    }

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

我很快乐:/我非常感谢!

编辑:我已经修复了一些东西,现在它已经完成了功能!

1 回答

  • 1

    如果我没有错或缺少一些代码,则有两个错误:

    • 你的结构被称为"person"(小p),但你实例化了新的Person with Person(date:(addPersonVC.date))

    • 如果使用let声明结构的属性,则需要在初始化中定义它们,因为它们是常量 . 否则你必须称他们为var

相关问题