gpt4 book ai didi

ios - 扩展函数的返回值?

转载 作者:行者123 更新时间:2023-11-30 14:09:55 24 4
gpt4 key购买 nike

我遇到一个问题,当我选择 UITextField 时,会弹出一个 View Controller ,用户可以在其中在搜索栏中输入内容并通过 Google Places API 搜索特定项目。它看起来像这样:

//When clicking on the UITextField, this function is called
@IBAction func selectLocation(){
gpaViewController.placeDelegate = self
presentViewController(gpaViewController, animated: true, completion: nil)
}

通过GooglePlacesAutocomplete github我在网上找到了:https://github.com/watsonbox/ios_google_places_autocomplete下面的扩展是为我编写的,这样每次您从呈现的 gpaViewController 中的 UITableView 中选择一个条目时,place.description 就会一起打印其详细信息如下所示:

extension EventFormController: GooglePlacesAutocompleteDelegate {
func placeSelected(place: Place){
var test: Place?
println(place.description)
place.getDetails { details in
println(details)
}
}

func placeViewClosed() {
dismissViewControllerAnimated(true, completion: nil)
}
}

但是,这样做后,我想要它,以便我可以从 placeSelected 函数返回 place.description (如上所示),但我不太确定如何这样做。我尝试在库内编辑 placeSelected 函数,但我认为您无法从 didSelectRowAtIndexPath UITableView 函数返回任何内容。

public func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
delegate?.placeSelected?(self.places[indexPath.row])
}

有关如何在选择选项后返回 place.description 并将该 place.description 设置为 UITextField 内的文本的任何想法?任何帮助将不胜感激!

最佳答案

func placeSelected(place: Place) 是一个协议(protocol)方法,在不破坏回调链的情况下,你不能通过添加返回值来改变签名,也就是说,如果你改变了协议(protocol)方法的签名,它就不会被改变。叫。您应该使用它来更新您的 UI,而不是从函数中返回 place.description,例如:

func placeSelected(place: Place){
var test: Place?
println(place.description)

// update UI
textField.text = place.description // assuming that your EventFormController has reference to the textField you're trying to access

place.getDetails { details in
println(details)
}
}

如果您能更具体地解释您想要实现的目标,那就更好了。我仍然不明白你的 placeSelected 和 didSelectRowAtIndexPath 实现之间的联系。

关于ios - 扩展函数的返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31873428/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com