如何在Swift 4

时间:2019-06-10 06:54:36

标签: swift tableview

enter image description here我已经使用蠕虫标签条可可来获取像Android这样的标签,标签的名称来自服务器响应,根据标签名称的数量,我需要n个视图控制器。

出于测试目的,我对选项卡名称进行了硬编码,对于每个特定的选项卡名称,我还有另一个子名称数组。我的问题是如何更改tableview的内容,以便根据标签名称获得确切数量的子名称

var tabNames = ["Brands", "Sports","Movies", "Mobile","Games"]
var brandsNames = ["Addidas", "Nike","Puma"]
var sportsName = ["Cricket","Fifa","Hockey","Baseball"]
var moviesName = ["Mission Impossible","Matrix","Avatar","Titanic"]
var mobileNames = ["Nokia","Redmi","Samsung"]
var gameNames = ["FIFA 19","PES 19","WWE 2K19","Max Payne"]

我应该尝试

func tableView(_ tableView: UITableView, numberOfRowsInSection 
section: Int) -> Int {

   // return fruits.count
    }

 func tableView(_ tableView: UITableView, cellForRowAt indexPath: 
IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", 
for: indexPath) as! Cell1
    //cell.textLabel?.text = fruits[indexPath.row]

    return cell
    }

我需要获取“品牌”标签,我需要brandNames作为表格视图     内容。

tableview的内容必须根据选项卡名称进行更改。

2 个答案:

答案 0 :(得分:1)

例如,创建一个自定义结构作为数据模型

struct Category {  
    let name : String
    let items : [String]
}

声明数据源数组和索引

var categories = [Category]()
var index = 0

viewDidLoad中填充数据源数组,并设置index的当前索引中的UISegmentedControl

categories = [Category(name:"Brands", items: ["Addidas", "Nike","Puma"]),
              Category(name:"Sports", items: ["Cricket","Fifa","Hockey","Baseball"]),
              Category(name:"Movies", items: ["Mission Impossible","Matrix","Avatar","Titanic"]),
              Category(name:"Mobile", items: ["Nokia","Redmi","Samsung"]),
              Category(name:"Games", items: ["FIFA 19","PES 19","WWE 2K19","Max Payne"])]

index = // current index of the segmented control

在分段控件的IBAction中设置索引并重新加载表格视图

@IBAction func categorySelection(_ sender: UISegmentedControl) {
    index = sender.selectedSegmentIndex
    tableView.reloadData()
}

数据源方法是

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
   return categories[index].items.count
}


func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! Cell1
    cell.textLabel?.text = categories[index].items[indexPath.row]
    return cell
}

答案 1 :(得分:0)

enter image description here我使用了这个enter link description here作为参考,以便可以将特定选项卡的ID传递给ViewController中的tableview并加载该Tablview,因此现在我可以动态添加新的选项卡,并且也可以动态添加相应的Tablview变化