我有一个带有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]
但远不止于此。任何帮助将不胜感激 - 谢谢!
答案 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];