1

可能重复:
在 UItableview 中显示 Plist 数据

我有一个带有字典的 plist 和每个字典的字符串数。显示到下面的 url 中。这个项目列表在 plist 中。它给了我输出但是......没有正确显示..我认为问题出在CellForRowatindexPath如果 NSLOGvalueArray输出正确

我需要将这些 plist 数据显示到 UItableview

进入图像 .

这该怎么做?

我的代码:

- (void)viewWillAppear:(BOOL)animated
{
    // get paths from root direcory
    NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                                 NSUserDomainMask, YES);
    NSString *documentsDirectory = [documentPaths objectAtIndex:0];
    NSString *documentPlistPath = [documentsDirectory stringByAppendingPathComponent:@"p.plist"];

    NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:documentPlistPath];

    valueArray = [dict objectForKey:@"title"];

    self.mySections=[valueArray copy];
    NSLog(@"value array %@",self.mySections);

}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return [self.mySections count];
}

-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {

    NSString *key = [[self.mySections objectAtIndex:section]objectForKey:@"pass"];
    return [NSString stringWithFormat:@"%@", key];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [self.mySections count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
    }

    // Configure the cell...
    NSUInteger section = [indexPath section];
    NSUInteger row = [indexPath row];

    cell.textLabel.text = [[self.mySections objectAtIndex:row] objectForKey:@"title"];
    cell.detailTextLabel.text=[[self.mySections objectAtIndex:section] objectForKey:[allKeys objectAtIndex:1]];

    return cell;
}
4

2 回答 2

1

在这里正确设置numberOfRowsInSection 具有正确行数的方法..

也在这里使用row而不是section.. 并且还设置objectForKey了字符串值 ..

更新

cell.textLabel.text = @"protein,carbs,fats,title";
cell.detailTextLabel.text=[NSString stringWithFormat:@"%@,%@,%@,%@",[[self.mySections objectAtIndex:row] objectForKey:@"protein"],[[self.mySections objectAtIndex:row] objectForKey:@"carbs"],[[self.mySections objectAtIndex:row] objectForKey:@"fats"],[[self.mySections objectAtIndex:row] objectForKey:@"title"]];

我希望这可以帮助你...

于 2012-12-18T05:47:59.240 回答
1

试试这个,我想这就是你想要的:

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return [self.mySections count];
}

-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {

    NSString *key = [[self.mySections objectAtIndex:section]objectForKey:@"pass"];
    return [NSString stringWithFormat:@"%@", key];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [[[self.mySections objectAtIndex:section ] allKeys] count] ;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
    }
    NSDictionary *dict = [self.mySections objectAtIndex:indexPath.section];
    cell.textLabel.text = [dict.allKeys objectAtIndex:indexPath.row];
    cell.detailTextLabel.text= [dict valueForKey:[dict.allKeys objectAtIndex:indexPath.row]];

    return cell;
}
于 2012-12-18T06:41:57.790 回答