我可以成功地使用DidSelectRowAtIndexPath
将数据(authorID)传递到视图。
现在我试着用一个按钮IBACTION来执行相同的segue,但是我找不到执行它的方法。我找不到在不活动中使用NSIndexPath的方法。
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
performSegueWithIdentifier("ArticleSegue", sender: indexPath)
tableView.deselectRowAtIndexPath(indexPath, animated: true)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "ArticleSegue"{
let toView = segue.destinationViewController as! ArticleTableViewController
let indexPath = sender as! NSIndexPath
let authorid = articleList?[indexPath.row]["author_id"].int!
toView.authorid = authorid
}
@IBAction func favButtonDidTouch(sender: AnyObject) {
//???
}
最佳答案
解决这个问题的一种方法是给favButtons一个标记(如果您不使用UIView标记来做其他事情),因为您只需要单元格的行(这里的indexPath.row用于您的文章列表)。
这意味着在tableView:cellForRowAtIndexPath:
中配置单元格时,您只需说:
cell.favButton.tag = indexPath.row
然后在IBAction中,使用该标记创建一个NSIndexPath并调用segue:
let indexPath = NSIndexPath(forRow: sender.tag, inSection: 0)
self.performSegueWithIdentifier("ManualSegue", sender: indexPath)
在这种情况下,请确保发件人是一个UIView(此处为UIButton)。
关于ios - Swift-IBACTION如何执行搜寻,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31379138/