在Swift中深入查看tableview

时间:2015-06-03 03:54:10

标签: ios swift tableview

所以基本上我想要实现这种形式的tableview,如草图所示。

enter image description here

我有一个 MasterTableViewController ,其中包含一系列人物的名字。 当用户选择人员2 时,会显示人员2 详细信息的详细信息,例如姓名年龄位置状态

如果是这样,用户会查看并点击后退按钮,他们就可以选择其他人并查看与人员2 不同的详细信息。

过去两周我一直遇到麻烦,我无法弄明白。我一直在寻找互联网,但没有。任何帮助都会有很大帮助。或者也是压缩文件中的swift Xcode项目示例。

2 个答案:

答案 0 :(得分:1)

您可以创建一个包含人员数据的类:

class People {
var name: String?
var age : Int?
var location: String?
var status: String?

init(name: String, age: Int, location: String, status: String) {

    self.name = name
    self.age = age
    self.location = location
    self.status = status
   }
}

之后,您可以这样添加数据:

func setUpPersons(){

    let person1 = People(name: "Anna", age: 20, location: "12312321", status: "Single")
    let person2 = People(name: "John", age: 30, location: "12312321", status: "Single")
    let person3 = People(name: "Leo", age: 30, location: "12312321", status: "Single")
    let preson4 = People(name: "Dharmesh", age: 30, location: "12312321", status: "Single")
    arrayOfPerson.append(person1)
    arrayOfPerson.append(person2)
    arrayOfPerson.append(person3)
    arrayOfPerson.append(preson4)
}

然后您可以通过这种方式将人名显示在tableview单元格中:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell : UITableViewCell = tableView.dequeueReusableCellWithIdentifier("Cell") as! UITableViewCell
    let person = arrayOfPerson[indexPath.row]
    cell.textLabel?.text = person.name
    return cell
}

您可以通过以下方式获取选定的单元格索引:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

    selectedIndex = indexPath.row
}

之后,您可以通过这种方式传递数据:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

    if(segue.identifier == "yourIdentifierInStoryboard") {

        var detailViewController = (segue.destinationViewController as! DetailViewController)
        let person = arrayOfPerson[selectedIndex]

        detailViewController.nameP = person.name!
        detailViewController.ageP = person.age!
        detailViewController.locationP = person.location!
        detailViewController.statusP = person.status!
    }
}

这样您就可以显示所选人员的数据:

    class DetailViewController: UIViewController {

    @IBOutlet weak var name: UILabel!
    @IBOutlet weak var age: UILabel!
    @IBOutlet weak var location: UILabel!
    @IBOutlet weak var status: UILabel!

    var nameP = ""
    var ageP = 0
    var locationP = ""
    var statusP = ""

    override func viewDidLoad() {
        super.viewDidLoad()
        println(nameP)
        name.text = nameP
        age.text = "\(ageP)"
        location.text = locationP
        status.text = statusP
    }

}

HERE是您的示例项目。

答案 1 :(得分:0)

基本上您要做的是在MasterTableViewDetailView之间添加一个segue,这是在您点击表格单元格时触发的。 DetailView控制器逻辑应具有nameagelocationstatus属性,这些属性可以在MasterTableView控制器中设置为{ {1}}功能。

有关示例,请参阅this