我想和不同的人一起制作一张桌面视图 . 您可以通过单击“添加”按钮来添加人员 . 单击“添加”按钮时,将填写“名字”,“姓氏”和“日期”信息 . 单击完成按钮后,它将返回到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 回答
如果我没有错或缺少一些代码,则有两个错误:
你的结构被称为"person"(小p),但你实例化了新的Person with Person(date:(addPersonVC.date))
如果使用let声明结构的属性,则需要在初始化中定义它们,因为它们是常量 . 否则你必须称他们为var