よく質問されていることはよく知っていますが、いくつかの調査を行いましたが、解決策はありません。ので、ここでtableViewCellのデータを別のVCに渡すとエラーが発生する
は、テーブルビューと私のコントローラのUIButtonが私のtableView細胞であり
class MainPage: UIViewController, UITableViewDelegate, UITableViewDataSource, YoubikeManagerDelegate {
@IBOutlet weak var tableView: UITableView!
let mainPageCell = MainPageCell()
let mapPage = MapViewController()
var stations: [Station] = []
override func viewDidLoad() {
super.viewDidLoad()
tableView.delegate = self
tableView.dataSource = self
}
override func viewDidAppear(_ animated: Bool) {
}
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "infoCell") as! MainPageCell
cell.stationNameLabel.text = stations[indexPath.row].name
cell.stationLocationLabel.text = stations[indexPath.row].address
cell.numberOfRemainingBikeLabel.text = stations[indexPath.row].numberOfRemainingBikes
cell.printer = stations[indexPath.row].name
cell.mapBtn.tag = indexPath.row
cell.mapBtn.addTarget(self, action: #selector(moveToMapPage), for: .touchUpInside)
return cell
}
func moveToMapPage(sender: UIButton) {
self.performSegue(withIdentifier: "toMap", sender: self)
let nameToPass = stations[sender.tag].name
mapPage.stationName = nameToPass
}
}
class MainPageCell: UITableViewCell {
var printer: String!
let mapPage = MapViewController()
@IBOutlet weak var stationNameLabel: UILabel!
@IBOutlet weak var mapBtn: UIButton!
@IBOutlet weak var stationLocationLabel: UILabel!
@IBOutlet weak var numberOfRemainingBikeLabel: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
mapBtn.addTarget(self, action: #selector(mapBtnTapped), for: .touchUpInside)
}
func mapBtnTapped (sender: UIButton) {
print (printer)
}
}
、これは私の他のVCである
class MapViewController: UIViewController, CLLocationManagerDelegate, MKMapViewDelegate {
@IBOutlet weak var mapView: MKMapView!
var stationName: String = ""
override func viewDidLoad() {
super.viewDidLoad()
self.title = stationName
}
}
ここで私が今直面している問題を詳しく説明します。 私がしたいことは、tableViewセルのボタンをタップするときです。MapViewControllerに行き、このセルのタイトルを「ステーション名」にしたいと思います。
したがって、テーブルビューのVCでは、cellforRowAt
の関数私はaddTargetを呼び出しました。 moveToMapPage
機能
と が、私はボタンをタップし、MapViewのVC、stationName
に行く私が間違って何が起こるのか見当もつかない
nilをまだです、 任意のヒントが
へのリンクに答えるためちょっとラッセルのおかげを取得したい場合
prepare(for segue...
を使用する必要があります!私はナビゲーションのものを誤解しているようだ – Ian