2

我刚刚在我的应用程序中实现了一个书签/收藏夹功能,来自 a 的收藏夹tableview,使用以下代码,使用NSUserDefaults. 该单元格有 2 个标签,项目名称和价格 - 存储在数组中 -theArraythePriceArray-> 如下所示:

在此处输入图像描述

    NSIndexPath *indexPath = [_ListTableView indexPathForCell:(UITableViewCell *)     [[sender superview] superview]];


    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    NSMutableArray *OrderList = [[defaults objectForKey:ORDER_KEY] mutableCopy];
    if (!OrderList) OrderList = [NSMutableArray array];
    [OrderList addObject:[theArray objectAtIndex:indexPath.row]];
    [OrderList addObject:[thePriceArray objectAtIndex:indexPath.row]];
    [defaults setObject:OrderList forKey:ORDER_KEY];
    [defaults synchronize];

我现在将两个数组 theArray&添加thePriceArrayNSMutableArray. 我现在想在另一个中显示这些信息(来自数组的信息)tableview。我这样做是这样的:

在我的viewDidAppear

    NSUserDefaults *defaults = kSettings;


    NSMutableArray *theOrderList = [NSMutableArray arrayWithArray:[defaults objectForKey:ORDER_KEY]];

并显示以下内容tableview

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

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *simpleTableIdentifier = @"TheTableCell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
    }

    cell.textLabel.text = [theOrderList objectAtIndex:indexPath.row];



    return cell;
}

这几乎可以按我的意愿工作,显示 和 的内容theArraythePriceArray但是在一个长长的列表中,如下所示:

在此处输入图像描述

我希望“键和值”在一个单元格中,所以价格和项目名称在一个单元格中(Hat - 30)而不是单独的,我该怎么做?我曾尝试使用 a NSDictionary,但没有运气,我可以使用NSDictionary它吗?

4

3 回答 3

1

您可以为 favItem 和 favPrize 创建两个新数组。只需将您最喜欢的项目添加到 favItem 数组,并将最喜欢的奖品添加到 favPrize 数组。现在使用这些数组来设置 Tableview 的标签和 detailLabels,例如:

cell.textLabel.text = [favItems objectAtIndex:indexPath.row];
cell.detailTextLabel.text = [favPrize objectAtIndex:indexPath.row];
于 2012-12-31T11:50:40.533 回答
1

保留数组theArraythePriceArray seperate使用一个作为 tableView 数据源的主数组。

注意:将数据从 NSUserDefault 添加到相应的数组。

现在方法是:

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

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *simpleTableIdentifier = @"TheTableCell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubTile reuseIdentifier:simpleTableIdentifier];
    }

    cell.textLabel.text = [theArray objectAtIndex:indexPath.row];
    cell.detailTextLabel.text = [thePriceArray objectAtIndex:indexPath.row];
    return cell;
}
于 2012-12-31T11:55:54.833 回答
1

您可以使用以下代码简单地做到这一点:

NSString *label = [NSString stringWithFormat:@"%@    %@",[theOrderList objectAtIndex:(indexPath.row * 2)],[theOrderList objectAtIndex:(indexPath.row * 2)+1]
cell.textLabel.text = label;

并改变你的numberOfRowsInSection喜欢:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [theOrderList count]/2;
}
于 2012-12-31T11:56:52.037 回答