所以基本上我想要实现这种形式的tableview,如草图所示。
我有一个 MasterTableViewController ,其中包含一系列人物的名字。 当用户选择人员2 时,会显示人员2 详细信息的详细信息,例如姓名,年龄,位置和状态。
如果是这样,用户会查看并点击后退按钮,他们就可以选择其他人并查看与人员2 不同的详细信息。
过去两周我一直遇到麻烦,我无法弄明白。我一直在寻找互联网,但没有。任何帮助都会有很大帮助。或者也是压缩文件中的swift Xcode项目示例。
答案 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)
基本上您要做的是在MasterTableView
和DetailView
之间添加一个segue,这是在您点击表格单元格时触发的。 DetailView
控制器逻辑应具有name
,age
,location
和status
属性,这些属性可以在MasterTableView
控制器中设置为{ {1}}功能。
有关示例,请参阅this。