如何将数组“匹配”到tableview单元格/行

时间:2015-03-18 19:41:38

标签: ios

我有一个带有tableView的应用程序,该应用程序显示各种UI元素以及维生素信息。该订单取决于用户并存储在数组中。 我目前使用大量的if语句显示正确的信息,如下所示:

//IndexPath == 0
if indexPath.row == 0 && vitmaminsArray[0] == "A" {
    title.text = "Vitamin A"
    vitaminAinfo()
    …
}

if indexPath.row == 0 && vitmaminsArray[0] == "B" {
    title.text = "Vitamin B"
    vitaminBinfo()
    …
}

if indexPath.row == 0 && vitmaminsArray[0] == "C" {
    title.text = "Vitamin C"
    vitaminCinfo()
    …
}

etc 

//IndexPath == 1
if indexPath.row == 1 && vitmaminsArray[1] == "A" {
    title.text = "Vitamin A"
    vitaminAinfo()
    …
}

if indexPath.row == 1 && vitmaminsArray[1] == "B" {
    title.text = "Vitamin B"
    vitaminBinfo()
    …
}

if indexPath.row == 1 && vitmaminsArray[1] == "C" {
    title.text = "Vitamin C"
    vitaminCinfo()
    …
}

etc

我认为这是一个非常愚蠢的解决方案,但我不知道用相应的内容“映射”tableView Cells的更好方法。如果它只是我可以写的标题

title.text = vitmaminsArray[indexPath.row]

但远不止于此。任何帮助将不胜感激 - 谢谢!

2 个答案:

答案 0 :(得分:1)

使用另一级别的间接:

title.text = vitmaminsArray[userIndexForItem[indexPath.row]]

userIndexForItem []数组将用户特定索引映射到主索引。

答案 1 :(得分:1)

如果您有一个对象数组,请让维生素信息采取一个对象:

//or not void if you need a return
-(void)vitaminInfo:(Vitamin *)vitamin
{
   do stuff with vitamin
}
在cellForRow中

Vitamin *vitamin = [vitaminArray objectAtIndex:indexPath.row];
cell.title.text = vitamin.name;
[self vitaminInfo:vitamin];