无法在 viewDidLoad 中调用函数 [关闭]

Posted

技术标签:

【中文标题】无法在 viewDidLoad 中调用函数 [关闭]【英文标题】:Can't call a function in viewDidLoad [closed] 【发布时间】:2018-01-17 13:58:44 【问题描述】:

我在控制器中创建了这个函数

func addMarker(place:EClass) 

    guard let coordinates = place.location  else 
        return
    

    self.destination = coordinates
    // clear current marker
    marker.map = nil

    marker.position = coordinates
    marker.title = place.name
    marker.map = mapView
    mapView.selectedMarker = marker

    

现在我正试图在我的 viewDidLoad 中调用它,因为我想在我的 mapView 中添加一些标记

override func viewDidLoad() 
        super.viewDidLoad()
        print(categories as Any)

        guard let currentUser = Auth.auth().currentUser else 
            return
        



        tableView.dataSource = self
        tableView.delegate = self

        dateFormatter.timeZone = TimeZone.current
        dateFormatter.dateFormat = "hh:mm"
        print(dateFormatter.string(from: NSDate() as Date))


         mapView.isMyLocationEnabled = true
         locationManager?.startUpdatingLocation()


         //HERE 
         let srt = sortedArray
         for category in categories! 
            addMarker(place: srt)
        




但我收到错误“使用未解析的标识符'addMarker'”,为什么?我该如何解决?

【问题讨论】:

通过查看函数你有一个额外的紧花括号 在您的代码 EClass 类型中是“srt”变量吗?似乎 sortedArray 是数组,所以它必须是 [EClass] ? 因排版错误关闭 @Krunal 我的意思是 func addMarker(place:[EClass]) ... 如果 sortedArray 是数组 【参考方案1】:

您的addMarker 有一个额外的括号。

 func addMarker(place:EClass) 

    guard let coordinates = place.location  else 
        return
    

    self.destination = coordinates
    // clear current marker
    marker.map = nil

    marker.position = coordinates
    marker.title = place.name
    marker.map = mapView
    mapView.selectedMarker = marker

 

【讨论】:

而不是回答你应该标记为关闭的问题 这是一个完全正确的问题,每个人都至少遇到过一次。 对!没注意,谢谢 OP 有没有读过我的 cmets 哈哈 :( @AlejandroIván 阅读了帮助页面,尤其是在这个问题下的摘录作为最接近的原因。每个人都可能至少发生过一次印刷错误,但解决有关印刷错误的问题对未来的读者来说根本没有用,因此它们被认为是题外话

以上是关于无法在 viewDidLoad 中调用函数 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

当模态视图控制器被解除时如何调用函数

如何在 iOS8 的 viewDidLoad() 中调用此函数

iOS presentViewController 不调用 viewDidLoad

用函数停用在 viewdidload 中声明的 nslayoutconstraint

UIView核心动画无法在viewdidLoad方法中工作?

viewDidLoad 函数未在 Xcode 6.2 swift 应用程序中调用,但在 OS X 上的 Xcode 6.4 swift 应用程序中调用