许多不同的 ViewController 中的 Cell
Cell in many different ViewControllers
我有一个单元格,我在许多不同的地方使用 vc 因为我的应用程序分为不同的类别,但都使用相同的单元格。
现在我有一个按钮可以触发事件以通过其他应用程序(如 whastapp 或 facebook)共享它。
问题在于,根据您所在的类别,您有不同的视图控制器来显示该功能。
我可以让它在一个单元格中使用一个但不能使用 10 个不同的 vc。
我使用扩展来获取 parentviewController
extension UIView {
var parentViewController: HomeViewController? {
var parentResponder: UIResponder? = self
while parentResponder != nil {
parentResponder = parentResponder!.next
if parentResponder is UIViewController {
return parentResponder as! HomeViewController!
}
}
return nil
}
这显然只适用于家庭 vc。
我该如何解决这个问题?
您可以使用协议来处理视图控制器中的按钮操作:
protocol ShareEventDelegate: class {
func didShareButtonSelected()
}
在您的自定义单元格中:
class CustomCell: UITableViewCell {
weak var shareDelegate: ShareEventDelegate?
func yourButtonAction() {
shareDelegate.didShareButtonSelected?()
}
}
然后让你的ViewControllers符合ShareEventDelegate,例如:
extension HomeViewController: ShareEventDelegate {
func didShareButtonSelected() {
// handle your action here
}
}
并且在 cellForRow:
cell.shareDelegate = self
我有一个单元格,我在许多不同的地方使用 vc 因为我的应用程序分为不同的类别,但都使用相同的单元格。
现在我有一个按钮可以触发事件以通过其他应用程序(如 whastapp 或 facebook)共享它。 问题在于,根据您所在的类别,您有不同的视图控制器来显示该功能。 我可以让它在一个单元格中使用一个但不能使用 10 个不同的 vc。
我使用扩展来获取 parentviewController
extension UIView {
var parentViewController: HomeViewController? {
var parentResponder: UIResponder? = self
while parentResponder != nil {
parentResponder = parentResponder!.next
if parentResponder is UIViewController {
return parentResponder as! HomeViewController!
}
}
return nil
}
这显然只适用于家庭 vc。
我该如何解决这个问题?
您可以使用协议来处理视图控制器中的按钮操作:
protocol ShareEventDelegate: class {
func didShareButtonSelected()
}
在您的自定义单元格中:
class CustomCell: UITableViewCell {
weak var shareDelegate: ShareEventDelegate?
func yourButtonAction() {
shareDelegate.didShareButtonSelected?()
}
}
然后让你的ViewControllers符合ShareEventDelegate,例如:
extension HomeViewController: ShareEventDelegate {
func didShareButtonSelected() {
// handle your action here
}
}
并且在 cellForRow:
cell.shareDelegate = self