我一直在寻找好几个小时,似乎无法找到答案。我的swift文件包含超过20个非常长的数组,但我将在这个问题中用简短的类似例子来简化它。
我们说我有一个" A级"使用如下所示的数组:
var mainArray = ["One, "Two", "Three"]
override func viewDidLoad()
{
super.viewDidLoad()
}
override func didReceiveMemoryWarning()
{
super.didReceiveMemoryWarning()
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return mainArray.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cellA = tableView.dequeueReusableCellWithIdentifier("prototype1", forIndexPath: indexPath)
cellA.textLabel?.text = mainArray[indexPath.row]
return cellA
}
然后是" B"有多个数组,如:
var arrayOne = ["A", "B", "C"]
var arrayTwo = ["D", "E", "F", "G"]
var arrayThree = ["H", "I"]
var itemArray = [String]()
override func didReceiveMemoryWarning()
{
super.didReceiveMemoryWarning()
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return itemArray.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
let cellB = tableView.dequeueReusableCellWithIdentifier("prototype2", forIndexPath: indexPath)
cellB.textLabel?.text = itemArray[indexPath.row]
return cellB
}
我一直想弄清楚的是如何选择要显示的特定阵列。
例如,在这种情况下,我想点击带有标签' Two'在主阵列中,并且segue到第二个视图控制器(B类)并显示标记为的四个单元格:
d
电子
˚F
分别
如果有人能帮助我,我会非常感激。
答案 0 :(得分:0)
在B类中定义一个属性(如下面的代码),然后在打开类集之前设置该值为1或2或3的属性。
public var arrayNumber : Int?
然后在numberOfRowsInSection
和cellForRowAtIndexPath
根据该属性的值(arrayNumber
)决定使用其中一个arrayOne
或arrayTwo
或arrayThree
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
if arrayNumber == 1
return arrayOne.count
else if arrayNumber == 2
return arrayTwo.count
else
return arrayThree.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
let cellB = tableView.dequeueReusableCellWithIdentifier("prototype2", forIndexPath: indexPath)
if arrayNumber == 1
cellB.textLabel?.text = arrayOne[indexPath.row]
else if arrayNumber == 2
cellB.textLabel?.text = arrayTwo[indexPath.row]
else
cellB.textLabel?.text = arrayThree[indexPath.row]
return cellB
}
如果每个阵列的设计不同,则应将dequeueReusableCellWithIdentifier
分开。
答案 1 :(得分:0)
定义变量如下
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
switch (arrayChoice){
case 1:
//return no of items in array 1
case 2:
//return no of items in array 2
default:
p//return no of items in default condition
}
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
switch (arrayChoice){
case 1:
let cellA = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)
cellA.textLabel?.text = itemArray[indexPath.row]
return cellA
case 2:
let cellB = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)
cellB.textLabel?.text = itemArray[indexPath.row]
return cellB
default:
let cellDefault = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)
cellDefault.textLabel?.text = itemArray[indexPath.row]
return cellDefault
}
}
此变量将控制在tableview中加载哪个数组
然后在tableview委托方法中执行以下操作
[textView setScrollEnabled:NO];
这只是为了让您了解如何解决您的情况。在加载表之前,请确保已选择要加载的单元格。
希望这会有所帮助......