我刚刚使用tableview
在我的应用中实现了一个书签/收藏夹功能,来自NSUserDefaults
的收藏夹,代码如下。单元格有2个标签,项目名称和价格 - 存储在数组中 - theArray
和thePriceArray
- >像这样:
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
& thePriceArray
,NSMutableArray
。我现在想要在另一个tableview
中显示这些信息(来自arraies的信息)。我是这样做的:
在我的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;
}
这几乎按照我的意愿运作,显示了theArray
和thePriceArray
的内容,但是在如下的长列表中显示:
我希望“键和值”在一个单元格中,因此一个单元格中的价格和项目名称(Hat - 30)而不是单独的,我该怎么做?我曾尝试使用NSDictionary
,但没有运气,我可以使用NSDictionary
吗?
答案 0 :(得分:1)
您可以为favItem和favPrize创建两个新数组。只需将您喜欢的项目添加到favItem数组,并将最喜欢的奖品添加到favPrize数组。现在使用这些数组来设置Tableview的标签和detailLabel,如:
cell.textLabel.text = [favItems objectAtIndex:indexPath.row];
cell.detailTextLabel.text = [favPrize objectAtIndex:indexPath.row];
答案 1 :(得分:1)
保持数组theArray
和thePriceArray
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;
}
答案 2 :(得分: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;
}