选择UITableViewCell
时,我遇到了一个非常有趣的问题。目前我正在尝试将一个数组从我的主ViewController传递到一个辅助ViewController。我第一次启动我的应用程序并在UITableView
中选择一个单元格时,所有内容都完美加载,但是当我第二次选择不同的单元格时,来自旧单元格的信息似乎一直存在,直到我再次回来并选择细胞第二次。
以下是在我的第一个ViewController
中处理信息逾越的函数func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
self.selectedRow = indexPath.row
print("The current row is: ", self.selectedRow)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
{
let nextViewController = segue.destination as! SelectedEventViewController
nextViewController.recievedArray = [self.eventArrayData[self.selectedRow]]
}
这是接收信息的视图控制器
class SelectedEventViewController: UIViewController
{
@IBOutlet weak var mapView: GMSMapView!
@IBOutlet weak var recHost: UILabel!
@IBOutlet weak var recStatus: UILabel!
@IBOutlet weak var recPrice: UILabel!
@IBOutlet weak var recAddress: UILabel!
@IBOutlet weak var recTown: UILabel!
var recievedArray: Array = [eventStruct]()
override func viewDidLoad()
{
super.viewDidLoad()
self.loadData()
}
func loadData()
{
let camera = GMSCameraPosition.camera(withLatitude: self.recievedArray[0].eventLat, longitude: self.recievedArray[0].eventLong, zoom: 15)
self.mapView.camera = camera
let marker = GMSMarker()
marker.position = CLLocationCoordinate2D(latitude: 0.0, longitude: 0.0)
marker.title = self.recievedArray[0].eventHost
marker.map = self.mapView
recHost.text = self.recievedArray[0].eventHost
self.title = self.recievedArray[0].eventHost
}
}
非常感谢任何帮助!
答案 0 :(得分:0)
您正在直接从故事板中的行的action
出口触发segue,结果是在调用didSelectRowAt
函数之前启动了segue,结果为{{1}调用self.selectedRow
时包含旧行。
您可以使用prepare(for:)
中的indexPathForSelectedRow
媒体资源,然后又不需要实施prepare(for:)
didSelectRowAt: