2017-10-11 23 views
0

當選擇UITableViewCell時,我遇到了一個非常有趣的問題。此刻,我試圖從我的主ViewController傳遞一個數組到一個輔助ViewController。第一次啓動我的應用程序並在我的UITableView中選擇一個單元格時,所有內容都可以完美載入,但是當我選擇另一個單元格時,第二次從舊單元格獲得的信息似乎會一直存在,直到我再次返回並選擇一個單元格時間。當新信息應該在上面時,數據仍舊保留在舊視圖中 - Swift

下面是處理信息逾越節在我的第一個視圖控制器

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

您直接從action出口觸發SEGUE該行與結果是SEGUE正在啓動didSelectRowAt函數調用與self.selectedRow包含舊行時prepare(for:)被稱爲結果前的腳本中。

您可以在prepare(for:)使用indexPathForSelectedRow財產,那麼你並不需要實現didSelectRowAt:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) 
{ 
    let nextViewController = segue.destination as! SelectedEventViewController 
    if let indexPath = tableView.indexPathForSelectedRow { 
     let selectedRow = indexPath.row 
     nextViewController.recievedArray = [self.eventArrayData[selectedRow]] 
    } 
} 
+0

剛剛嘗試了代碼提示,我似乎收到「不明確的參考成員「的tableView( _:numberOfRowsInSection :)'「 – hpcsolo

+0

您可能在{ – Paulw11

+0

}的平衡中出現錯誤。剛剛選中但沒有任何內容與平衡{} – hpcsolo

相關問題