表视图中的不同图像?

时间:2011-10-02 22:18:47

标签: iphone cocoa-touch uitableview uiimageview

我对论坛很新,并且喜欢一些帮助。我有一个表格视图,我可以通过单独的页面上的不同按钮添加单元格。我想让每个按钮添加一个新的单元格,但具有不同的图像。所以举个例子。按钮1将添加一个单元格,名为@"button1.png"按钮的图像将添加一个名为@"button2.png"的图像的单元格,依此类推。但我无法将图像添加到单元格。我可以在cellForRow中进行,但不能在按钮方法中进行。有人可以帮帮我吗?我在按钮中试过这个:

修改 的 用于添加单元格和图像的按钮:

- (IBAction)outlet1:(id)sender {
[cart.cells addObject:@"1"];
[cart.cell.imageView setImage:[UIImage imageNamed:@"paddle1.png"]];
}

cellForRow

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

cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault     
reuseIdentifier:CellIdentifier];
} 
//cell.imageView.image = [UIImage imageNamed:@"paddle1.png"];
[myTableView reloadRowsAtIndexPaths:indexPath.row   
withRowAnimation:UITableViewRowAnimationNone];

cell.textLabel.text = [cells objectAtIndex:indexPath.row];
return cell;
}

2 个答案:

答案 0 :(得分:0)

UITableView呈现的方式是,无论何时渲染该行,生成所需的像素,然后忘记该单元格,它都要求一个单元格。由于单元格的大多数结构不会在行之间发生变化,因此可以重复使用相同的单元格对象来渲染多行,并且只需(例如)更改标签文本或imageView的图像。

因此,在渲染行之后更改单元格不会更改行的外观。您需要告诉表重新呈现该行:

[myTable reloadRowsAtIndexPaths:indexPathArray withRowAnimation:foo];

这将导致操作系统调用tableView的数据源委托cellForRowAtIndexPath:消息,然后需要创建和/或修改单元格,然后呈现该单元格。

单元格不是行。单元格是用于渲染行的对象。

答案 1 :(得分:0)

如果我理解了这个问题,您希望购物车对象在表格单元格中显示其图片。如果这是真的,那么为什么不向购物车对象添加UIImage视图。在适当的时间(用户选择对象的某个地方)将项目的图像存储到对象的UIImage视图中。然后,当您将购物车对象设置到表格中时,您可以在对象中创建对象名称(大概)和它的图像,然后您可以轻松地将单元格的图像设置为对象图像。不要试图在“cellForRowAtIndexPath”方法中显示哪个图像的逻辑。将图像和所有属性存储在对象中,并使用objectAtIndex指向整个对象,并根据对象属性设置单元格。