2011-08-17 69 views
0

如果u有数组这样的UITableView显示

quizArrayAnswers=[[NSMutableArray alloc] initWithObjects: 
        [NSMutableArray arrayWithObjects: @"blue", @"Red", @"Green",@"Yellow", nil], 
        [NSMutableArray arrayWithObjects: @"fred", @"jim", @"spud",@"tom", nil], 
        [NSMutableArray arrayWithObjects: @"albert", @"jim", @"spud",@"tom", nil], 
        //[NSMutableArray arrayWithObjects: @"emergency btn", @"fire alarm", @"doorbell",@"danger", nil], 
        [NSMutableArray arrayWithObjects: @"dog", @"rabbit", @"bird",@"flea", nil],nil]; 

创建您是如何得到的UITableView文本标签,以显示我想这第一对象的第一行,但没有良好的所有其它表的方法完成

cell.textLabel.text = [quizArrayQuestions objectAtIndex:[indexPath row]]; 

感谢

回答

1

我不是100%您正试图实现的目标。

您当前的逻辑将返回四个NSMutableArray对象之一。然后您需要确定您想要显示的NSMutableArray中的哪个项目,并执行另一个objectAtIndex:呼叫。

因此,举例来说,如果你是第2行当前的代码将返回该对象

(
    albert, 
    jim, 
    spud, 
    tom 
) 

然后,您将需要抓住的一个字符串。它可能看起来像这样

NSArray *questions = [quizArrayQuestions objectAtIndex:[indexPath row]]; 
cell.textLabel.text = [questions objectAtIndex:indexOfQuestionText]; 
0

你有一个阵列内的嵌套阵列。因此,您需要改为拨打以下电话号码:

cell.textLabel.text = [[quizArrayQuestions objectAtIndex:[indexPath row]] objectAtIndex: 0]; 
1

我不太清楚你的意思是“第一个对象的第一行”。这可能是Thor所建议的,在这种情况下,它会为您的前四个表格单元抓取阵列中的第一个对象。

你也可以做

cell.textLabel.text = [[quizArrayQuestions objectAtIndex:0] objectAtIndex:[indexPath row]]; 

这将让你的对象第一阵列中的一个人。

更广泛地说,你可以使用,如果你要处理的部分,以及嵌套的数组:

cell.textLabel.text = [[quizArrayQuestions objectAtIndex:[indexPath section]] objectAtIndex:[indexPath row]]; 

无论如何,以嵌套的数组,你会打电话objectAtIndex:第一是指数在拿到阵列。然后调用objectAtIndex:再次获取该数组中所需的元素。


有件事要提的是,你想避免使用可变数组,除非你实际上计划修改数据。因为你对这些值进行了硬编码,并且这些值将被显示在tableview中,所以我猜你并不打算让它们改变。如果在可能的情况下使用非可变元素,对性能和“样式点”更好。