我需要在UITableView中有61个部分,这意味着我必须有61个NSArray,对吧?!
首先我定义了61个NSArray,并且视图中的init确实加载了
使用此代码已经很累了
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
switch (section) {
case 0:
return [searchArray_1 count];
break;
case 1:
return [searchArray_2 count];
break;
case 2:
return [searchArray_3 count];
break;
case 3:
return [searchArray_4 count];
break;
...
case 60:
return [searchArray_61 count];
break;
}
return 1;
}
和配置单元格中的此代码
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [self.myTable dequeueReusableCellWithIdentifier:CellIdentifier];
switch (indexPath.section) {
case 0:
cell.textLabel.text = [searchArray_1 objectAtIndex:indexPath.row];
break;
case 1:
cell.textLabel.text = [searchArray_2 objectAtIndex:indexPath.row];
break;
case 2:
cell.textLabel.text = [searchArray_3 objectAtIndex:indexPath.row];
break;
...
case 60:
cell.textLabel.text = [searchArray_61 objectAtIndex:indexPath.row];
break;
default:
break;
}
return cell;
}
它工作正常,但我怎样才能减少数组
答案 0 :(得分:3)
你需要另一个阵列。
NSArray * sectionArray = @[searchArray_1, searchArray_2, ...., searchArray_61] ;
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
NSArray * array = sectionArray[section] ;
return [array count] ;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [self.myTable dequeueReusableCellWithIdentifier:CellIdentifier];
NSArray * array = sectionArray[indexPath.section] ;
cell.textLabel.text = array[indexPath.row] ;
return cell;
}
答案 1 :(得分:0)
您可以制作一个包含所有数组的NSDictionary
,例如(假设您有一个类型为NSDictionary
且属性名为database的属性);
self.database = @{ @1 : myArray1, @2:myArray2:};
你仍然需要手动填写它。但是在你的cellForRowAtIndexPath中:你可以这样做:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
NSArray *arrayToUse = self.database[@(indexPath.row)];
UITableViewCell *cell = [self.myTable dequeueReusableCellWithIdentifier:CellIdentifier];
cell.textLabel.text = arrayToUse[indexPath.row];
return cell;
}
因此,您将使用indexPath.row查找NSArray
中的正确NSDictionary
。
答案 2 :(得分:0)
使用 Plist数据库 .plist数据库生成Dictionary.that存储所有Array.so,你可以使用键和值对简单地访问特定的数组。我认为这是最好的方法...
答案 3 :(得分:0)
您可以使用字典。在您的情况下,您需要61个键值对。获得61个部分你可以使用
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return [dictionary allKeys].count;
}
要在每个部分中获得所需的行数,请执行以下方法。
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
}
要使用值填充所有单元格,请执行以下委托方法。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
}
此处将正确的数据输入表中您需要根据部分指定特定键的值。