Передача информации о местоположении из Uibutton на страницу просмотра карты и начало навигации - PullRequest
0 голосов
/ 25 марта 2019

введите описание изображения здесь

    
    var location: [Location] = [
    
    Location(title: "LaFarge Hall", cllocation: CLLocation(latitude: 39.992853, longitude: -75.239888), regionRadius: 300.0, location: "Cardinal Ave", type: "Dorm Hall", coordinate: CLLocationCoordinate2DMake( 39.992853, -75.239888))
    ]
    
    @IBAction func tapDidNavi(sender: UIButton){
        
        
    }
    

У меня есть список кнопок, которые представляют собой места, где пользователи могут выбирать места.Когда пользователь нажимает кнопку, кнопка переместится на страницу просмотра карты и нарисует путь Google Polyliner от текущего местоположения к выбранному местоположению.Выпадающие кнопки местоположения находятся в массиве, который включает координаты местоположения, и я хочу передать координаты местоположения и запустить представление карты, которое рисует путь от текущего местоположения до координат.

1 Ответ

0 голосов
/ 26 марта 2019

Я бы предложил использовать здесь UITableView вместо списка кнопок.Но если вам нужно использовать список кнопок, это должно работать:

Просто создайте подкласс UIButton и добавьте свойство location к его инициализатору.

class LocationButton: UIButton {

public var location : Location

init(location: Location, frame: CGRect) {

    self.location = location

    super.init(frame: frame)

    setProperties()
}

///needed for interface builder 
required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}

private func setProperties() {
    //Set properties of button here...
    setTitle("Button Title", for: .normal)
   }
}

Создание LocationButton будетвыглядит примерно так:

let locationButton = LocationButton(location: Location(title: "LaFarge Hall", location: CLLocation(), frame: CGRect())

Обязательно добавьте цель к каждой кнопке в массиве:

locationButton.addTarget(self, action: #selector(tapDidNavi(_:)), for: .touchUpInside)

Обновите функцию tapDidNavi (), чтобы она принимала тип LocationButton.Затем вы сможете захватить местоположение с любой нажатой кнопки и передать его следующему viewController следующим образом:

@IBAction func tapDidNavi(sender: LocationButton) {
    let nextViewController = SomeViewController() //This viewController must have a 'public var Location' inside of it.
    nextViewController.location = sender.location //The location object you set on the button

    self.navigationController?.pushViewController(nextViewController, animated: true)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...