1
我正在編寫一個具有UITableView的應用程序。我目前已經爲表格中的單元設置了一個segue設置:如何根據didSelectRowatIndexPath位置顯示來自數組的項目?
var selectedRow = Int() //global variable so it can be used in both VCs
import UIKit
class TableViewController: UITableViewController {
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
performSegue(withIdentifier: "rowSelected", sender: Any?.self)
selectedRow = indexPath.row
}
}
segue正常工作。但是,在控制viewController
(僅用於更改標籤文本)的swift文件中無法正常工作。下面是從VC代碼:
override func viewDidLoad() {
super.viewDidLoad()
firstLabel.text = infoArray[selectedRow]
print(selectedRow)
}
的infoArray設置正確,但標籤並不總是更改爲正確的文字...印刷selectedRow返回不一致的數字......如果我打的第一個單元格它有時會返回0,但它也會返回1,3,2等等。它似乎是隨機的,並且不正確地返回當前的int(因此標籤文本設置不正確)。爲什麼是這樣?
我明白'prepare(for:)'是如何工作的......只是確定了我在最初的問題中使用過的同一個segue。但是,如何利用'sender:'來設置合適的整數來爲目標VC中的數組選擇正確的索引? –
這不是'發件人'的用途。你可以把它留在'nil'。你知道什麼是合適的整數,因爲你仍然是你(第一個視圖控制器)。您可以將這些信息放入_this_視圖控制器的屬性中;那就是你如何在同一視圖控制器的方法之間共享信息。你有看到?這都是未來規劃的問題。你知道你需要在這個視圖控制器中共享這個信息,所以這個視圖控制器有一個屬性。你知道你需要與其他視圖控制器共享它,所以另一個視圖控制器有一個屬性。 – matt
甚至更好,只要問表視圖。 – matt