当关闭其上方以模态呈现的视图控制器时,如何从 table 视图控制器中取消选择行?
How can I deselect rows from a table view controller when dismissing a modally presented view controller above it?
我有一个 table 视图控制器 (A),它以模式方式呈现导航控制器,另一个 table 视图控制器 (B) 作为其根视图。当从 A 中点击一个单元格时会显示 B,但当通过向下滑动将 B 关闭时,该单元格仍保持选中状态。
我一直在尝试从 B 访问 A 而没有尝试使用委托,因为设置所有这些似乎只是为了在用户决定向下滑动以关闭 B 而不是使用取消时取消选择某些行似乎过分了调用 unwind segue 以取消选择行的按钮。
我试过在 A 中取消选择 viewWillAppear()
和 viewDidAppear()
中的行,但这似乎不起作用。
我已经在 B 中实现了 presentationControllerDidDismiss(presentationController:)
函数,因此当 B 被正确关闭时我可以调用 A 来取消选择行,但是我无法访问 A。
我试过手动添加和调用与取消按钮调用相同的转场,以重复使用相同的取消选择实现
class TableViewControllerB: UITableViewController, UIAdaptivePresentationControllerDelegate {
// ...
func presentationControllerDidDismiss(_ presentationController: UIPresentationController) {
self.performSegue(withIdentifier: "cancelUnwind", sender: self)
}
}
我也尝试过通过 presentingViewController
访问 A,但由于某种原因它是零,即使 B 是通过 A 模态呈现的。
我不确定在滑动关闭 B 时如何访问 A 或让它取消选择其行。任何想法将不胜感激。
在您 didSelectRowAt
的 table 视图中,调用:
yourTableView.deselectRow(at: indexPath as IndexPath, animated: true)
这将在您按下后取消选择该行!
在模态显示之前,您可以将 tableView 作为可选变量从 A 传递到 B。
class tableViewControllerB {
var tableViewA:UiTableView?
}
当您在 A 中实例化控制器 B 时,设置此变量,然后呈现控制器。当它被解雇时,使用 indexPathForSelectedRow https://developer.apple.com/documentation/uikit/uitableview/1615000-indexpathforselectedrow
取消选择单元格。
我有一个 table 视图控制器 (A),它以模式方式呈现导航控制器,另一个 table 视图控制器 (B) 作为其根视图。当从 A 中点击一个单元格时会显示 B,但当通过向下滑动将 B 关闭时,该单元格仍保持选中状态。
我一直在尝试从 B 访问 A 而没有尝试使用委托,因为设置所有这些似乎只是为了在用户决定向下滑动以关闭 B 而不是使用取消时取消选择某些行似乎过分了调用 unwind segue 以取消选择行的按钮。
我试过在 A 中取消选择 viewWillAppear()
和 viewDidAppear()
中的行,但这似乎不起作用。
我已经在 B 中实现了 presentationControllerDidDismiss(presentationController:)
函数,因此当 B 被正确关闭时我可以调用 A 来取消选择行,但是我无法访问 A。
我试过手动添加和调用与取消按钮调用相同的转场,以重复使用相同的取消选择实现
class TableViewControllerB: UITableViewController, UIAdaptivePresentationControllerDelegate {
// ...
func presentationControllerDidDismiss(_ presentationController: UIPresentationController) {
self.performSegue(withIdentifier: "cancelUnwind", sender: self)
}
}
我也尝试过通过 presentingViewController
访问 A,但由于某种原因它是零,即使 B 是通过 A 模态呈现的。
我不确定在滑动关闭 B 时如何访问 A 或让它取消选择其行。任何想法将不胜感激。
在您 didSelectRowAt
的 table 视图中,调用:
yourTableView.deselectRow(at: indexPath as IndexPath, animated: true)
这将在您按下后取消选择该行!
在模态显示之前,您可以将 tableView 作为可选变量从 A 传递到 B。
class tableViewControllerB { var tableViewA:UiTableView? }
当您在 A 中实例化控制器 B 时,设置此变量,然后呈现控制器。当它被解雇时,使用 indexPathForSelectedRow https://developer.apple.com/documentation/uikit/uitableview/1615000-indexpathforselectedrow
取消选择单元格。