如何使用分组样式将nsmutablearray设置为uitableview

时间:2016-06-02 11:33:40

标签: ios objective-c uitableview nsmutablearray

我使用UITableView样式创建UITableViewStyleGrouped,并且只有一个部分,在此部分中有三行

这是我的代码:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
  return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
  return 3;
}

我从我的服务器获取数据

{
  statuscode = 1;
  personalinfo =     (
            {
        name = "charles";
        age = 30;
        sex = "man";
    }
  );
}

我把它设置为uitableview,如关注

[self setArrayDB:[responseObject objectForKey:@"personalinfo"]];
        if ([_arrayDB count] != 0) {
            [_tableView reloadData];
}

并按照这样阅读

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSDictionary *item = [_arrayDB objectAtIndex:0];
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

        switch ([indexPath row]) {
            case 0:
            {
                cell.textLabel.text = @"name";
                NSLog(@"name===>%@",[item objectForKey:@"name"]);
            }
                break;
            case 1:
            {
                cell.textLabel.text = @"sex";
                NSLog(@"sex===>%@",[item objectForKey:@"sex"]);
            }
                break;
            case 2:
            {
                cell.textLabel.text = @"age";
                NSLog(@"age===>%@",[item objectForKey:@"age"]);
            }
                break;
            default:
                break;
        }

    cell.textLabel.font = [UIFont fontWithName:fontZ size:15.0f];
    cell.textLabel.textColor = [UIColor blackColor];
}

cell.selectionStyle = UITableViewCellSelectionStyleNone;
return cell;
}

但我无法得到结果,你能帮帮我吗,错在哪里?非常感谢。

1 个答案:

答案 0 :(得分:0)

首先,您的数据结构是错误的。 如果要在tableview中显示数据,那么您的数据结构必须在包含对象的数组中。

{ 
  statuscode = 1; 
  personalinfo = ( 
   { 
    name = "charles";
    age = 30;
    sex = "man"; 
   },
   { 
    name = "charles";
    age = 30;
    sex = "man"; 
   },
   { 
    name = "charles";
    age = 30;
    sex = "man"; 
   }
)
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
  return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
  return [arrayDB[@"personalinfo"] count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{
   NSDictionary *item = [_arrayDB objectAtIndex:0];
   static NSString *CellIdentifier = @"Cell";
   UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) 
{
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
    NSDictionary *aDictData = [arrayDB[@"personalinfo"] objectAtIndex:indexPath];
    cell.textLabel.text = aDictData[@"name"];
    //Same way you can set other values from Dictionary in label....
    cell.textLabel.font = [UIFont fontWithName:fontZ size:15.0f];
    cell.textLabel.textColor = [UIColor blackColor];
}

cell.selectionStyle = UITableViewCellSelectionStyleNone;
return cell;
}

希望这会对你有帮助..