Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在tableview中创建具有多个字段的单元格?_Ios_Swift - Fatal编程技术网

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

Ios 如何在tableview中创建具有多个字段的单元格?,ios,swift,Ios,Swift,我想和不同的人做一个桌面视图。您可以通过单击“添加”按钮添加人员。单击“添加”按钮时,填写信息“名字”、“姓氏”和“日期”。当您单击“完成”按钮时,它将返回到tableview,单元格显示人员的名字 我创建了一个新的swift文件,其中包含一个结构: struct person { var firstName : String var lastName : String var date : String } 在tabledetailviewcontroller.swift(

我想和不同的人做一个桌面视图。您可以通过单击“添加”按钮添加人员。单击“添加”按钮时,填写信息“名字”、“姓氏”和“日期”。当您单击“完成”按钮时,它将返回到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:nsindepath)->

最后,我有一个“完成”按钮,它将新用户附加到数组中(这部分不断给我错误…)

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

我对斯威夫特很陌生:/ 我非常感激


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

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

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

  • 标准做法是转到新视图输入新记录,然后在完成后返回。您可以使用表格视图输入新记录的字段,也可以只使用文本字段。我有两个视图:一个用于实际表格,另一个在单击“添加”时出现,它包含所有文本字段。祝您好运!我修复了这些,但它仍然在这一行中断:让newPerson=person(date:(addPersonVC.date))当我调试时,newPerson的“date”值是一些奇怪的值!但是“addPersonVC.date”显示的是正确的日期。我没有正确设置newPerson的日期值吗?它应该从addperson视图控制器获取日期并将其设置为newPerson日期值。您可以更新上面的代码以查看函数现在的外观吗?并检查addPersonVC.date是否不是niladdPersonVC.date=“2014年11月18日下午3:40”因此它不是零。但当我像上面提到的那样将其分配给newPerson时,它会给我一些奇怪的值,然后在该行中断。您的结构仍然希望所有值都被初始化,因为它们不是可选的。您可以将其更改为
    struct person{var firstName:String?var lastName:String?let date:String init(date1:String){date=date1}}
    已将其修复!谢谢
    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)
        }