夫特 - 详细视图控制器根据表视图细胞
问题描述:
我有动态原型一个基本表视图控制器,夫特 - 详细视图控制器根据表视图细胞
那里可以出现4个细胞,但也可出现6个细胞。
我要的是:
取决于哪个小区点击切换到另一个“细节” -ViewController。
我首先想到的是这样的:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if cell1clicked {
// go to viewcontrollerA
} elseif cell2clicked {
// go to viewcontrollerB
} elseif cell3clicked {
// go to viewcontrollerC
} else {
// go to viewcontrollerD
}
}
是这甚至可能与tableviewcontrollers?
问候和感谢!
答
它可以通过在故事板中使用TableViewController
来实现,并使用静态单元而不是动态。
这里是这样的:
1-定义4个细胞在静态的tableView。
2-在故事板中拖动4视图控制器。
3-在Storyboard中将第一个单元与viewcontrollerA等连接起来。
4-确保你的类继承UITableViewController并删除tableview方法。
更新:
如果要使用动态细胞及其可能推ViewController
编程:
1- 4个拖动和ViewControllers去身份检查,并给每一个 一个故事板ID。
2-为您的ViewControllers创建4个类,并将每个 故事板连接到它的类。 - 在 故事板中将导航控制器添加到您的初始ViewController。
伊夫让你在这里的样本类:
class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource{
var array = ["First","Second","Third","Fourth"]
@IBOutlet weak var tableviewmy: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 4
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! UITableViewCell
cell.textLabel?.text = array[indexPath.row]
return cell;
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
if indexPath.row == 0 {
var controller1 : FirstViewController = storyboard?.instantiateViewControllerWithIdentifier("ViewControllerA") as! FirstViewController
self.navigationController?.pushViewController(controller1, animated: true)
}else if indexPath.row == 1{
var controller2 : SecondViewController = storyboard?.instantiateViewControllerWithIdentifier("ViewControllerB") as! SecondViewController
self.navigationController?.pushViewController(controller2, animated: true)
}else if indexPath.row == 2 {
// controller 3
}else {
// controller 4
}
}
}
你可以下载一个示例项目: https://yadi.sk/d/F5Qb85MLiMPqk
我已经更新了我的答案,它应该工作:) – AaoIi