【发布时间】:2016-06-26 03:25:34
【问题描述】:
在我的应用程序中,我有一个表格视图,其中列出了朋友的姓名,当您单击表格视图中的姓名时,它应该执行转入另一个存储此朋友信息的视图控制器的操作。虽然我可以点击这些行,但它并没有在朋友信息视图控制器中执行 segue。有想法该怎么解决这个吗?提前致谢! :)
@IBOutlet weak var tableView: UITableView!
var friends = ["A","B","C","D"]
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.tableView.dataSource = self
self.tableView.dataSource = self
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.friends.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = UITableViewCell()
let friend = self.friends[indexPath.row]
cell.textLabel!.text = friend
return cell
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
self.performSegueWithIdentifier("detailSegue", sender: nil)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let listVC = segue.destinationViewController as! FriendDetailViewController
}
【问题讨论】:
-
显示您的故事板并选择 segue。
-
您可能需要检查您的 segue 是否具有正确的标识符,因为字符串标识符是区分大小写的,并且您的代码似乎没有任何问题。另外,检查 segue 是从 Main View Controller 到 Detail View Controller,而不是从原型单元到 Detail ViewController。
-
我看到你有两次
self.tableView.dataSource = self,但没有分配delegate。这意味着tableView:didSelectRwoAtIndexPath没有被调用。用self.tableView.delegate = self替换其中一个self.tableView.dataSource = self,你应该很好。
标签: ios iphone swift uitableview segue