我在服务器上有数据,我想在tableView中显示。
问题在于我想基于类别显示数据,所以我有数组类别,其中的类别将是节标题,其中有数据,所以要显示我必须声明数组的数据。
例如如果有三个类别,那么我们必须制作三个数组来填充数据,但是如果有更多类别,则类别是动态的并来自服务器。
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return [categoryArray count] ;
}
如何设置节标题的标题,因为它在类别数组中,所以如果它是数组中的逐个节。
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
NSLog(@"Number of Sections");
if(section == 0)
return @"Sales";
if(section == 1)
return @"Soft Skills";
}
如何在tableView单元格中显示数据我可以为所有类别创建数组吗?
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if (section==0)
{
appDelegate = (MultipleDetailViewsWithNavigatorAppDelegate *)[[UIApplication sharedApplication] delegate];
int count=[resultArray count];
NSLog(@"resultArry Row Counts is %d",count);
return [resultArray count];
}
else{
appDelegate = (MultipleDetailViewsWithNavigatorAppDelegate *)[[UIApplication sharedApplication] delegate];
int count=[resultArrayOne count];
NSLog(@"resultArry Row Counts is %d",count);
return [resultArrayOne count];
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"Table Cell Data");
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
if (indexPath.section==0) {
appDelegate = (MultipleDetailViewsWithNavigatorAppDelegate *)[[UIApplication sharedApplication] delegate];
ObjectData *theCellData = [resultArray objectAtIndex:indexPath.row];
NSString *cellValue =theCellData.sub_Category;
cell.font=[UIFont fontWithName:@"Helvetical Bold" size:14];
NSLog(@"Cell Values %@",cellValue);
cell.textLabel.text = cellValue;
return cell;
}
else {
appDelegate = (MultipleDetailViewsWithNavigatorAppDelegate *)[[UIApplication sharedApplication] delegate];
ObjectData *theCellData = [resultArrayOne objectAtIndex:indexPath.row];
NSString *cellValue =theCellData.sub_Category;
cell.font=[UIFont fontWithName:@"Helvetical Bold" size:14];
NSLog(@"Cell Values %@",cellValue);
cell.textLabel.text = cellValue;
return cell;
}
}
答案 0 :(得分:1)
由于从服务器获取类别似乎不是您的问题,因此我的答案基于预填充数组,以便更好地进行可视化。
NSMutableArray *categories = @[@"Cat1", @"Cat2"];
// creata a dictionary with all the array for the categorie rows
NSMutableDictionary *rowDict = @{@"Cat1":@[@"Cat1Row1",@"Cat1Row2",@"..."],
@"Cat2":@[@"Cat2Row1", @"Cat2Row2",@"..."]
此解决方案的关键是您使用类别字符串作为字典的键。
您现在可以像这样访问标题
了- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
return categories[section];
}
并像这样访问你的行
- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// ...
// create or deque a cell like you normally would do
// now configure the cell
cell.textLable.text = [rowDict[categories[indexPath.section]] objectAtIndex:indexPath.row]
}
答案 1 :(得分:0)
尝试以下代码。它会解决你的问题:
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
return [categoryArray objectAtIndex:section];
}
编辑:
numberOfRowsInSection
和cellForRowAtIndexPath
委托功能。答案 2 :(得分:0)
使用
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
return [categoryArray objectAtindex:section];
}
用于章节标题。
同样,将每个类别的值存储在一个nsmutable数组NSDictionary中,并在uitableviewcell中显示每个类别的数据。