我对 Swift 比较陌生。我尝试搜索和谷歌搜索这个问题,但找不到任何答案。应该没那么难。希望你们能帮助我。我几天来一直在努力解决这个问题:
我创建了一个 Tableview,它从另一个 .swift 文件加载元组数组。效果很好!现在我希望 TableView 根据“段控件”选择 .swift 。因此,如果 Segment-Control 切换到“A”,我希望它显示“PSSCBOOKMac.Swift”数组,对于 B,则显示“PSSCBOOKWin.swift”数组。
我猜这个 Action 写得正确(打印语句正在工作)。但段控件的更改不会影响 Tableview。我的猜测:段控件不会影响 Tableview,因为它之前已经加载过并且我无法更改该值。我怎样才能做到这一点?
为任何答案干杯!
这是代码:
import UIKit
class ViewController: UIViewController, UITableViewDataSource {
@IBOutlet weak var PSSCSegmentControl: UISegmentedControl!
//LOAD ARRAY FROM PSSCBOOK.SWIFT
var PSSCBook = PSSCBOOKMac()
@IBAction func PSSCSegmentControlChoose(sender: AnyObject) {
if PSSCSegmentControl.selectedSegmentIndex == 0 {
var PSSCBook = PSSCBOOKMac()
println("im mac")
} else {
var PSSCBook = PSSCBOOKWin()
println("im win")
}
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 2
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if section == 0 {
return PSSCBook.PSSCTools.count
} else {
return PSSCBook.PSSCFile.count
}
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCellWithIdentifier("PSCell", forIndexPath: indexPath) as! UITableViewCell
if indexPath.section == 0 {
let (shortCutTitle,shortCutKey) = PSSCBook.PSSCTools[indexPath.row]
cell.textLabel?.text = shortCutTitle
cell.detailTextLabel?.text = shortCutKey
} else {
let (shortCutTitle,shortCutKey) = PSSCBook.PSSCFile[indexPath.row]
cell.textLabel?.text = shortCutTitle
cell.detailTextLabel?.text = shortCutKey
}
/* var PSIcon = UIImage(named: "PSIcon")
cell.imageView?.image = PSIcon */
return cell
}
func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
if section == 0 {
return "Tools"
} else {
return "File"
}
}
}
最佳答案
当您更新 TableView 的数据源时,它不会神奇地自行更新。
您必须重新加载表格 View 才能使更改生效:
@IBAction func PSSCSegmentControlChoose(sender: AnyObject) {
if PSSCSegmentControl.selectedSegmentIndex == 0 {
var PSSCBook = PSSCBOOKMac()
println("im mac")
} else {
var PSSCBook = PSSCBOOKWin()
println("im win")
}
self.tableView.reloadData();
}
关于ios - 基于Segment-Control将数组加载到TableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31474557/