-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
ItemsCustomCell *cell;
static NSString *CellIdentifier = @"Cell";
cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[ItemsCustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"ItemsCustomCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
cell.itemName.text=titles[indexPath.row];
[ cell.addButton setBackgroundImage:[UIImage imageNamed:@"add_btn.png"] forState:UIControlStateNormal];
[cell.addButton addTarget:self action:@selector(Checktag:event:)forControlEvents:UIControlEventTouchUpInside];
cell.cellBackgroudImage.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:@"list_bg.png"] ];
NSArray *anArrayOfIndexPath = [NSArray arrayWithArray:[self.itemsTableView indexPathsForVisibleRows]];
NSIndexPath *indexPathVisibleRowsLast= [anArrayOfIndexPath lastObject];
[ cell.addButton setBackgroundImage:[UIImage imageNamed:@"add_btn.png"] forState:UIControlStateNormal];
int firstVisible=(indexPathVisibleRowsLast.row)-8;
CGPoint offset = itemsTableView.contentOffset;
CGRect bounds = itemsTableView.bounds;
CGSize size = itemsTableView.contentSize;
UIEdgeInsets inset = itemsTableView.contentInset;
float y = offset.y + bounds.size.height - inset.bottom;
float h = size.height;
float reload_distance = 10;
}
}
return cell;
}
此代码用于在单击时更改单元格.button的图像
- (void)Checktag:(id)sender event:(id)event
{
UIButton *btnClicked=(UIButton *)sender;
NSLog(@"%i",btnClicked.tag);
[ btnClicked setBackgroundImage:[UIImage imageNamed:@"tick_btn.png"]
forState:UIControlStateNormal];
NSSet *touches = [event allTouches];
UITouch *touch = [touches anyObject];
CGPoint currentTouchPosition = [touch locationInView:itemsTableView];
NSIndexPath *indexPath = [itemsTableView indexPathForRowAtPoint: currentTouchPosition];
NSString *title=titles[indexPath.row];
NSString *id1=idAll[indexPath.row];
[mySelectedItems addObject:title];
[idSelectedItems addObject:id1];
NSLog(@"value of indePath.section %d ,indexPath.row %d",indexPath.section,indexPath.row);
}
表刷新时,所有更改的图像都设置为默认值
答案 0 :(得分:0)
查看代码的最后几行
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
ItemsCustomCell *cell;
static NSString *CellIdentifier = @"Cell";
cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[ItemsCustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"ItemsCustomCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
[ cell.addButton setBackgroundImage:[UIImage imageNamed:@"add_btn.png"] forState:UIControlStateNormal];
[cell.addButton addTarget:self action:@selector(Checktag:event:)forControlEvents:UIControlEventTouchUpInside];
cell.cellBackgroudImage.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:@"list_bg.png"] ];
NSArray *anArrayOfIndexPath = [NSArray arrayWithArray:[self.itemsTableView indexPathsForVisibleRows]];
NSIndexPath *indexPathVisibleRowsLast= [anArrayOfIndexPath lastObject];
[ cell.addButton setBackgroundImage:[UIImage imageNamed:@"add_btn.png"] forState:UIControlStateNormal];
int firstVisible=(indexPathVisibleRowsLast.row)-8;
CGPoint offset = itemsTableView.contentOffset;
CGRect bounds = itemsTableView.bounds;
CGSize size = itemsTableView.contentSize;
UIEdgeInsets inset = itemsTableView.contentInset;
float y = offset.y + bounds.size.height - inset.bottom;
float h = size.height;
float reload_distance = 10;
}
cell.itemName.text=titles[indexPath.row];
if ([idSelectedItems containsObject:indexPath])
{
[ cell.addButton setBackgroundImage:[UIImage imageNamed:@"tick_btn.png"]
forState:UIControlStateNormal];
}
}
答案 1 :(得分:0)
在班级的顶层
@implementation YourViewController : UIViewController
{
NSMutableDictionary *selectedRows;
}
然后将此方法更改为此
- (void)Checktag:(id)sender event:(id)event
{
UIButton *btnClicked=(UIButton *)sender;
NSLog(@"%i",btnClicked.tag);
[ btnClicked setBackgroundImage:[UIImage imageNamed:@"tick_btn.png"]
forState:UIControlStateNormal];
NSSet *touches = [event allTouches];
UITouch *touch = [touches anyObject];
CGPoint currentTouchPosition = [touch locationInView:itemsTableView];
NSIndexPath *indexPath = [itemsTableView indexPathForRowAtPoint: currentTouchPosition];
NSString *title=titles[indexPath.row];
NSString *id1=idAll[indexPath.row];
[mySelectedItems addObject:title];
[idSelectedItems addObject:id1];
NSLog(@"value of indePath.section %d ,indexPath.row %d",indexPath.section,indexPath.row);
// Add this lline of code
[selectedRows setBool:YES forKey:title];
}
最后在你的cellForRowAtIndexPath
中-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
ItemsCustomCell *cell;
static NSString *CellIdentifier = @"Cell";
cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[ItemsCustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"ItemsCustomCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
cell.itemName.text=titles[indexPath.row];
[ cell.addButton setBackgroundImage:[selectedRows boolForKey:titles[indexPath.row]] == YES ? [UIImage imageNamed:@"add_btn.png"] : [UIImage imageNamed:@"add_btn.png"] forState:UIControlStateNormal];
[cell.addButton addTarget:self action:@selector(Checktag:event:)forControlEvents:UIControlEventTouchUpInside];
cell.cellBackgroudImage.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:@"list_bg.png"] ];
NSArray *anArrayOfIndexPath = [NSArray arrayWithArray:[self.itemsTableView indexPathsForVisibleRows]];
NSIndexPath *indexPathVisibleRowsLast= [anArrayOfIndexPath lastObject];
[ cell.addButton setBackgroundImage:[UIImage imageNamed:@"add_btn.png"] forState:UIControlStateNormal];
int firstVisible=(indexPathVisibleRowsLast.row)-8;
CGPoint offset = itemsTableView.contentOffset;
CGRect bounds = itemsTableView.bounds;
CGSize size = itemsTableView.contentSize;
UIEdgeInsets inset = itemsTableView.contentInset;
float y = offset.y + bounds.size.height - inset.bottom;
float h = size.height;
float reload_distance = 10;
}
}
return cell;
}