ios - 基于Segment-Control将数组加载到TableView

标签 ios arrays swift uitableview uisegmentedcontrol

我对 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/

相关文章:

php - Codeigniter 在数据库结果中生成数组

swift - 如何访问文本字段值并将其转换为 double

arrays - 快速将协议(protocol)数组转换为任何对象

ios - 在 View Controller 之间传递数据

c - 如何检查 'x' 或 'o' 是否至少出现在一列中?

ios - 当我在设备中运行我的应用程序时出现 dyld`gdb_image_notifier 异常

PHP数组如何检查所有数组值是否存在于其他数组中

ios - Swift SpriteKit 层/节点加载速度不够快

ios - 如何从这个 JSON 数组中提取这个特定节点?

iphone - 在 iPhone SDK 中将对象添加到数组时出现问题