? ? 記錄一下今天遇到的一個問題:
數(shù)據(jù)源是一個這樣子結(jié)構(gòu)的數(shù)據(jù)
[
????{
????????"key" = [
????????????????{
????????????????},
????????????????{
????????????????}
????????????]
????},
????{
????????"key" = [
????????????????{
????????????????},
????????????????{
????????????????}
????????]
????}
]噪生,很明顯能看出這個self.dataArray里面是兩個字典冲杀,每個字典通過取key值[@"key"]得到的是第二層數(shù)組,第二層數(shù)組里面通過for循環(huán)遍歷得到的又是N個字典韧拒。
需求是:
- (NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section
{
? ??return self.dataArray.count > 0 ? self.dataArray.count : 0;
}
cellForRow方法里面:
if([[self.dataArray[indexPath.row]objectForKey:@"key"]count] >0) {
? ??for(inti =0; i < [[self.dataArray[indexPath.row]objectForKey:@"key"]count]; i ++) {
????????????UITextField*textField = [[UITextFieldalloc]initWithFrame:CGRectMake(lbl3.x+lbl3.width+10, lbl3.y, bgView2.width-10-48-48-10-(lbl3.x+lbl3.width+10), lbl3.height)];
? ? ? ? ? ? ...
? ? ? ? ? ? [textFieldsetTag:1000000*indexPath.row+i]; // 這里在給textField設置tag值的時候要這樣子設置就可以取到標題所提到的row和下標了伞租,至于為什么贞谓,接著往下分析:首先為什么要用1000000(你也可以自己定義,最好越大越好)這么大的值乘indexPath.row呢葵诈?因為如果用一個很小的值乘的話裸弦,假如[self.dataArray[indexPath.row]objectForKey:@"key"]count]比定義的值還大,那么接下來計算row和下標的方法將不可用(換句話說就是除非self.dataArray[indexPath.row]objectForKey:@"key"]里面的元素數(shù)量比1000000還大才會出問題)驯击,所以要定義一個很大的值烁兰。
????}
}
- (void)textFieldDidEndEditing:(UITextField*)textField
{
? ? // 就是這么簡單:
? ??NSInteger row = textField.tag/1000000;
????int i = textField.tag%1000000;
? ? 現(xiàn)在知道為什么上面要定義1000000那么大的數(shù)了吧。
}