【发布时间】:2017-04-08 19:12:11
【问题描述】:
我正在构建一个应用程序,从 TableViewController 开始,当我单击一个单元格时,它将转到另一个视图控制器并运行我在新视图控制器中创建的函数。我目前正在使用协议和委托,但即使按照我在网上找到的教程和指南进行操作,我仍然无法运行该函数。
这是我的 tableview 控制器代码。我包含了我认为相关的代码。
class interestPTableViewController: BaseViewController, UITableViewDataSource, UITableViewDelegate {
var ipSearchDelegate: IPSearch?
public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
ipSearchDelegate?.ipZoom()
}
}
这是我的其他视图控制器代码。我无法让它打印“你好”
protocol IPSearch: class{
func ipZoom()
}
class searchMapViewController: BaseViewController{
override func viewDidLoad(){
let ipip = storyboard!.instantiateViewController(withIdentifier: "interestP") as! interestPTableViewController
ipip.ipSearchDelegate = self
}
}
extension searchMapViewController: IPSearch {
func ipZoom(){
print("hello")
}
}
任何帮助都会很好。提前致谢。
【问题讨论】:
-
你有没有下过断点并测试了发生了什么?
-
嗯,不太清楚如何准确地看到发生了什么。但是当我检查时我的代表为零
-
这看起来有点倒退...一般来说,使用委托模式,以便加载/显示的类可以与加载它的类通信back。这是看起来,您正在尝试“在您刚刚加载的类中调用委托函数”?
-
@DonMag 我实际上想要做的是,当我单击一个单元格时,我希望它转到我的视图控制器,其中包含一个地图,然后通过加载给定的数据放大到该区域通过细胞。但是地图本身可以很好地工作,而无需将数据加载到其中。我只希望它在我浏览我的表格视图单元格时缩放。如果这有意义的话。
-
@JackieXY - 您的 TableView 和 MapViewController 中的视图是否同时在屏幕上可见?就像您的地图显示在顶部一样,并且您在其下方有一个表格可供选择?
标签: ios swift3 delegates protocols