Загружаю некоторую информацию из Firebase и храните эту информацию в моем классе аннотации. Затем я хочу передать эту информацию в переменные на следующем контроллере представления, чтобы табличное представление могло правильно загружаться. вместо сбоев, потому что значения возвращают нуль. Я использую кнопку аксессуара для вызова, чтобы начать сеанс. И я использую функцию calloutAccessoryControlTapped. Я понимаю, как передавать данные в целом с одного ViewController на другой, даже лучше, чем tableView, это уникально в том, что я использую аннотации MapKit, похожие на tableViewCells, но мне неизвестно эквивалент MapKit для indexRow. путь, который имеет tableViews.Как передать информацию, хранящуюся в аннотации MapKit, в новый контроллер представления при использовании prepareSegue
import Foundation
import UIKit
import MapKit
class BookAnnotation: NSObject, MKAnnotation {
var coordinate: CLLocationCoordinate2D
var title: String?
var Author:String?
var Genre: String?
var Comment: String?
var User: String?
var bookPhoto: String?
var userID: String?
var userPhoto: String?
var userLocation: String?
var bookRating: String?
var pushingID: String?
var bookLat: Double?
var bookLng: Double?
init(title: String, Author: String, Genre: String, Comment: String, User: String, bookPhoto: String, userID: String, userPhoto: String, userLocation: String, bookRating: String, pushingID: String, coordinate: CLLocationCoordinate2D){
self.title = title
self.Author = Author
self.Genre = Genre
self.Comment = Comment
self.User = User
self.bookPhoto = bookPhoto
self.userID = userID
self.userPhoto = userPhoto
self.userLocation = userLocation
self.bookRating = bookRating
self.pushingID = pushingID
self.coordinate = coordinate
super.init()
}
var subtitle: String? {
return Comment
}
}
Вот пример того, что было запрошено (некоторая разница в примечании. Вид передачи информации не Tableview это MapView, которая использует аннотацию, чтобы отобразить некоторую информацию и кнопочный детали Вспомогательные для пойти в следующий вид Controller, который является tableView.Таким образом, в этой функции я не могу использовать indexPath.row, и я не хранил вещи в словаре на этот раз, так как это довольно разный вид. Надеюсь, это имеет смысл):
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
super.prepare(for: segue, sender: sender)
if (segue.identifier == "moreInfo") {
//let navVC = segue.destinationViewController as! UINavigationController
let viewController = segue.destination as! MoreInfoViewController
let indexPath : IndexPath = self.tableView.indexPathForSelectedRow!
let moreInfoSnaphot: FIRDataSnapshot! = self.SecondResultArray[indexPath.row]
let moreInfoCells = moreInfoSnaphot.value as! Dictionary<String, String>
let AuthorInfo = moreInfoCells["Author"] as String!
let CommentInfo = moreInfoCells["Comment"] as String!
let GenreInfo = moreInfoCells["Genre"] as String!
let UserInfo = moreInfoCells["User"] as String!
let titleInfo = moreInfoCells["title"] as String!
let bookPhotoInfo = moreInfoCells["bookPhoto"] as String!
let userIDInfo = moreInfoCells["userID"] as String!
let userPIC = moreInfoCells["userPhoto"] as String!
let userLocation = moreInfoCells["userLocation"] as String!
let userToBePushed = moreInfoCells["pushingID"] as String!
print(userToBePushed)
userPictureURL = userPIC
// This posts the comment about the book in the info view
bookInfoSender = CommentInfo
//These two vars are to handel messageing and can be referenced later
userTobeMessaged = UserInfo
userToBeMessagedId = userIDInfo
////////////////////////////////////////
// initialize new view controller and cast it as your view controller
// your new view controller should have property that will store passed value
viewController.bookComment = bookInfoSender
viewController.UserToBeContacted = UserInfo
viewController.UserContactedID = userToBeMessagedId
viewController.userPictureurl = userPictureURL
viewController.userLocate = userLocation
viewController.bookPictureLink = bookPhotoInfo
viewController.genreOfBook = GenreInfo
viewController.titleOfBook = titleInfo
viewController.userBeingPushedMSG = userToBePushed
print("THIS IS THE USER TO BE PUSHED \(userToBePushed)")
}
}
Возможный дубликат [Передача данных между контроллерами View] (http://stackoverflow.com/questions/5210535/passing-data-between-view-controllers) – vikingosegundo
Могу ли я увидеть ваш метод prepareforsegue? –
@vikingosegundo Это не дубликат. Я знаю, как это сделать с помощью TableViews, но нет index.path, на который я могу положиться. Аннотации MapKit работают аналогичным образом, но я не нашел эквивалентного способа сделать это. –