2011-10-02 40 views
0

我是相当新的论坛和id爱一些援助。我有一个表格视图,并且能够通过单独页面上的不同按钮向其添加单元格。我想让每个按钮添加一个新的单元格,但使用不同的图像。举个例子。按钮1将添加一个单元格,并且名为@"button1.png"的图像按钮2将添加一个名为@"button2.png"的图像的单元格等。但即时通讯无法将图像添加到单元格。我可以在cellForRow中完成,但不能用按钮方法。有人可以帮我吗?我在按钮尝试这样做:Table view中的不同图像View?

编辑用于补充细胞和图像 按钮:

- (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; 
} 

回答

0

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

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

[myTable reloadRowsAtIndexPaths:indexPathArray withRowAnimation:foo]; 

这将导致操作系统调用的tableView的数据源代表cellForRowAtIndexPath:消息,然后需要创建和/或修改一个单元格,然后把它渲染。

单元格不是行。单元格是用于呈现行的对象。

+0

好的,所以当这个方法被调用时,它会重新加载表的行,它会允许我添加新的图像到tableview行?另外我应该用foo代替什么?非常感谢答复安德鲁! :) – iProRage

+0

使用indexPathArray调用该方法,该方法包括要更改的行的索引路径。至于'foo',请选择您想要的行动画,例如,如果您只是想立即重画UITableViewRowAnimationNone。查看此消息的文档以获取更多信息。 – AndrewS

+0

好吧,所以我把这个代码放在cellForRow中:'[myTableView reloadRowsAtIndexPaths:indexPath.row withRowAnimation:UITableViewRowAnimationNone];'它仍然不允许添加图片。如果我添加多个单元格,然后尝试去tableView页面,应用程序崩溃。在这里,你可以阅读我的代码,在我的问题中解决它并显示我现在拥有的。非常感谢所有的帮助! – iProRage

0

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

+0

嘿,非常感谢您的回复!购物车对象只是一个类的副本。至于在适当的时候添加图像,我的代码不会在上面工作?我有用户按下一个按钮,然后它添加它,然后当它添加单元格/行?你一直在说购物车对象。这是什么意思?你认为购物车是什么?因为,即时通讯不知道该怎么说,但购物车只是接受不同的课程 – iProRage

+0

你是否明白这一点? – BPratt

+0

是的,我确定,我只是将图像添加到像单元格文本的数组。它工作完美!谢谢您的帮助! – iProRage