当新信息出现在旧视图上时,数据仍然存在 - Swift

时间:2017-10-11 06:26:33

标签: ios arrays iphone uitableview uinavigationcontroller

选择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
    }

}

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

您正在直接从故事板中的行的action出口触发segue,结果是在调用didSelectRowAt函数之前启动了segue,结果为{{1}调用self.selectedRow时包含旧行。

您可以使用prepare(for:)中的indexPathForSelectedRow媒体资源,然后又不需要实施prepare(for:)

didSelectRowAt: