How to access segue in #39;didSelectRowAtIndexPath#39;?(如何访问DIdSelectRowAtIndexPath中的段?)
本文介绍了如何访问DIdSelectRowAtIndexPath中的段?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我知道如何使用preparareForSegue函数中的segues传递数据,但我有一个TableViewCell,从它有两个可能的segues到两个不同的ViewController(现在只说A、B)。
有人建议here最好将segues连接到View控制器,而不是TableCell本身,后者实际上工作得很好。但我希望在单击单元格时将信息传递给第二个视图控制器,因此如何访问我连接到源代码视图控制器的Segue。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showQuestionnaire"{
if let indexPath = self.tableView.indexPathForSelectedRow() {
let controller = (segue.destinationViewController as! UINavigationController).topViewController as! QuestionnaireController
let patientQuestionnaire = patientQuestionnaires[indexPath.row] as! PatientQuestionnaire
controller.selectedQuestionnaire = patientQuestionnaire
self.performSegueWithIdentifier("showQuestionnaire", sender: self)
}
}
}
再次声明:此问题与通过preparareForSegue
传递信息无关推荐答案
您应该使用didSelectRowAtIndexPath方法来确定单元格是否被选中,并作为段的发送方发送indexPath:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
self.performSegueWithIdentifier("showQuestionnaire", sender: indexPath);
}
然后在prepareForSegue方法中,从sender参数获取indexPath并使用它传递正确的行/数据:
override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
if (segue.identifier == "showQuestionnaire") {
let controller = (segue.destinationViewController as! UINavigationController).topViewController as! QuestionnaireController
let row = (sender as! NSIndexPath).row; //we know that sender is an NSIndexPath here.
let patientQuestionnaire = patientQuestionnaires[row] as! PatientQuestionnaire
controller.selectedQuestionnaire = patientQuestionnaire
}
}
解释...
- 我使用索引路径作为发送方,因此可以轻松传递索引路径。您也可以使用其他UITableView方法检查当前选定的单元格,但我总是成功地使用这种方法
- 您不能将
performSegueWithIdentifier放在Prepare for Segue方法中,因为performSegueWithIdentifier会导致prepareForSegue;您只是没有目标地循环。(当您要执行段时,始终会执行prepaareForSegue) prepareForSegue在选定行时不会自行运行。这是您需要didSelectRowAtIndexPath的地方。您需要一个performSegueWithIdentifier在前面描述的方法之外,它应该在didSelectRowAtIndexPath中
这篇关于如何访问DIdSelectRowAtIndexPath中的段?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
织梦狗教程
本文标题为:如何访问DIdSelectRowAtIndexPath中的段?
基础教程推荐
猜你喜欢
- navigator.geolocation.getCurrentPosition 在 Android 浏览器上 2022-01-01
- NSString intValue 不能用于检索电话号码 2022-01-01
- iPhone - 获取给定地点/时区的当前日期和时间并将其与同一地点的另一个日期/时间进行比较的正确方法 2022-01-01
- libGDX 从精灵或纹理中获取像素颜色 2022-01-01
- Android:getLastKnownLocation(LocationManager.NETWORK_PROVIDER 2022-01-01
- 通过重定向链接在 Google Play 中打开应用 2022-01-01
- iOS4 创建后台定时器 2022-01-01
- 如何从 logcat 中删除旧数据? 2022-01-01
- Cocos2d iPhone 非矩形精灵触摸检测 2022-01-01
- AdMob 广告未在模拟器中显示 2022-01-01
