我創建了一個程式,它有幾個顯示亂數集的螢屏;在填充標簽時,這一切都很好。
不過,對于其中一個螢屏,我需要顯示兩個獨立的結果。我用 Label 試過這個,但看起來不太好,所以我考慮使用 TableView,現在將結果資料實際推送到表的行是一個相當大的挑戰。
代碼如下所示:
class EController: UIViewController {
@IBOutlet var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = self
}
func allTogether(_ SetB:Set<Int>, _ Scope:ClosedRange<Int>) -> (Set<Int>){
func iterateNremove2() -> (Set<Int>, Set<Int>){
var nums = SetB
let scp = Scope
var reslts = Set<Int>()
for _ in scp{
let randNum = nums.randomElement()!
reslts.insert(randNum)
nums.remove(randNum)
}
return (nums, reslts)
}
let go = iterateNremove2()
let res = go.1
return (res)
}
@IBAction func Erand(_ sender: Any) {
let it = allTogether(Set(1...45), 1...10)
let that = allTogether(Set(1...9), 1...3)
let eStrngM = it.map(String.init).joined(separator: ", ")
let eStrngS = that.map(String.init).joined(separator: ", ")
let finRslts = [eStrngM, eStrngS]
}
}
extension EController: UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 2
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) ->UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.textLabel?.text = finRslts[indexPath.row]
return cell
}
}
抱歉這么多,但問題可能分散在代碼中,或者整個解決方案可能有問題(這是我看完教程后想到的)。
當呼叫“cell.textLabel?.text”時,我得到的唯一錯誤是“在范圍內找不到 finRslts”。
我嘗試在不同類之間移動隨機化功能和按鈕的@IBAction,但錯誤始終相同。我要么錯過了一些小東西,不知道如何搜索它,要么整個解決方案有問題。請幫忙。
uj5u.com熱心網友回復:
你必須創建finRslts——順便說一句,Swift 沒有像 Windows 95 中那樣的 8 3 變數名限制——在表視圖出口之后的類的頂層。
var finalResults = [String]()
在Erand替換
let finRslts = [eStrngM, eStrngS]
和
finalResults = [eStrngM, eStrngS]
tableView.reloadData()
并且最好將陣列中的專案數回傳 numberOfRowsInSection
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return finalResults.count
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/409550.html
標籤:
上一篇:表格節標題的分隔符插入
