[英]Change the image of a button that's on a cell upon click
在我的單元格中,我有3個按鈕,當用戶單擊每個按鈕時,將觸發以下3種方法。
- (void) but1:(id) sender{
NSLog(@"Touched 1 %ld",(long)[(UIButton *)sender tag]);
}
- (void) but2:(id) sender{
NSLog(@"Touched 2 %ld",(long)[(UIButton *)sender tag]);
}
- (void) but3:(id) sender{
NSLog(@"Touched 3 %ld",(long)[(UIButton *)sender tag]);
}
想象一下,用戶單擊按鈕1,然后應觸發but1
方法,並且按鈕1的背景圖像也應更改。 如何在上述方法中進行此更改。
注意:我正在使用XIB
文件。
我能夠訪問包含該單元格的NIB文件。
UINib *cellNib = [UINib nibWithNibName:@"MyCell" bundle:nil];
[self.contextMenuTableView registerNib:cellNib forCellReuseIdentifier:@"cell"];
現在如何訪問他觸摸的按鈕並更改圖像?
更新
這是一個表格視圖。 在每個單元格中有3個按鈕,我應該能夠選擇和取消選擇表格中的這些按鈕之一。
例如,如果只能選擇單元格中的1個按鈕 。 當選擇單元格時,我將顯示圖像。 如果不是,我將顯示默認圖像。
您可以將發件人的圖像更改為
- (void) but1:(id) sender{
NSLog(@"Touched 1 %ld",(long)[(UIButton *)sender tag]);
[((UIButton *)sender) setImage:[UIImage imageNamed:"image.png"] forState:UIControlStateNormal]
}
祝好運
嘗試類似
UIImage *btnImage = [UIImage imageNamed:@"image.png"];
[btnTwo setImage:btnImage forState:UIControlStateNormal];
要知道按下了哪個按鈕,可以為每個按鈕設置標簽。 從該標簽中,您將獲得粘貼了哪個按鈕的信息
在界面部分..
整數計數
在viewDidLoad中
計數= 0;
- (IBAction)ButtonClicked:(id)sender {
NSLog(@"Touched 1 %ld",(long)[(UIButton *)sender tag]);
if(count%2==0)
{
[((UIButton *)sender) setBackgroundImage:[UIImage imageNamed:@"imageA.png"] forState:UIControlStateNormal];
}
else
{
[((UIButton *)sender) setBackgroundImage:[UIImage imageNamed:@"imageB.png"] forState:UIControlStateNormal];
}
[(UIButton *)sender setTitle:@"" forState:UIControlStateNormal];
count=count+1;
}
- (void) but1:(id) sender{
[but1 setBackgroundImage:[UIImage imageNamed:@"blue_button.png"]
forState:UIControlStateNormal];
NSLog(@"Touched 1 %ld",(long)[(UIButton *)sender tag]);
}
試試這個代碼,這可能對您有幫助
也許可以這樣存檔
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
UIButton *btn1 = (UIButton *) [cell viewWithTag:1] ;
UIButton *btn2 = (UIButton *) [cell viewWithTag:2];
UIButton *btn3 = (UIButton *) [cell viewWithTag:3];
[btn1 setTag:((indexPath.row*10)+1)];
[btn1 setTag:((indexPath.row*10)+2)];
[btn3 setTag:((indexPath.row*10)+3)];
[btn1 addTarget:self action:@selector(but1:) forControlEvents:UIControlEventTouchDown];
[btn2 addTarget:self action:@selector(but2:) forControlEvents:UIControlEventTouchDown];
[btn3 addTarget:self action:@selector(but3:) forControlEvents:UIControlEventTouchDown];
return cell;
}
- (void) but1:(UIButton *) sender{
NSLog(@"Touched 1 %ld",((long)[(UIButton *)sender tag])%10);
[sender setBackgroundImage:[UIImage imageNamed:@"newImage.png"] forState:UIControlStateNormal];
NSInteger row = ((long)[sender tag])/10;
NSIndexPath *indexPathOfYourCell = [NSIndexPath indexPathForRow:row inSection:0];
[self.tableview beginUpdates];
[self.tableview reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPathOfYourCell] withRowAnimation:UITableViewRowAnimationNone];
[self.tableview endUpdates];
}
- (void) but2:(UIButton *) sender{
NSLog(@"Touched 2 %ld",((long)[(UIButton *)sender tag])%10);
[sender setBackgroundImage:[UIImage imageNamed:@"newImage.png"] forState:UIControlStateNormal];
NSInteger row = ((long)[sender tag])/10;
NSIndexPath *indexPathOfYourCell = [NSIndexPath indexPathForRow:row inSection:0];
[self.tableview beginUpdates];
[self.tableview reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPathOfYourCell] withRowAnimation:UITableViewRowAnimationNone];
[self.tableview endUpdates];
}
- (void) but3:(UIButton *) sender{
NSLog(@"Touched 3 %ld",((long)[(UIButton *)sender tag])%10);
[sender setBackgroundImage:[UIImage imageNamed:@"newImage.png"] forState:UIControlStateNormal];
NSInteger row = ((long)[sender tag])/10;
NSIndexPath *indexPathOfYourCell = [NSIndexPath indexPathForRow:row inSection:0];
[self.tableview beginUpdates];
[self.tableview reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPathOfYourCell] withRowAnimation:UITableViewRowAnimationNone];
[self.tableview endUpdates];
}
享受編碼!
你也可以用這個
button1.tag = 0;
button2.tag = 1;
button3.tag = 2;
[button1 setImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal];
[button1 setImage:[UIImage imageNamed:@"selected_image.png"] forState:UIControlStateSelected];
[button2 setImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal];
[button2 setImage:[UIImage imageNamed:@"selected_image.png"] forState:UIControlStateSelected];
[button3 setImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal];
[button3 setImage:[UIImage imageNamed:@"selected_image.png"] forState:UIControlStateSelected];
向所有按鈕添加一個公共選擇器( buttonClicked:
並實現選擇器,如下所示
- (void)buttonClicked:(id)sender
{
[button1 setSelected:NO];
[button2 setSelected:NO];
[button3 setSelected:NO];
if ([sender isKindOfClass:[UIButton class]])
[sender setSelected:YES];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.