#iphone #objective-c #xcode
#iPhone #objective-c #xcode
Вопрос:
В моем приложении я должен реализовать функциональность флажка в ячейке просмотра таблицы.При нажатии на этот флажок в той же ячейке будет создана другая метка.1-й как реализовать функциональность флажка?я создал пользовательскую ячейку. вот мой код, который я пробовал, но он не работает.
-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath {
UIButton *btnUncheck=[[UIButton alloc] initWithFrame:CGRectMake(260, 35, 20, 20)];
btnUncheck=[UIButton buttonWithType:UIButtonTypeCustom];
btnUncheck.tag=indexPath.row;
// [btnUncheck setImage:[UIImage imageNamed:@"NO.png"] forState:UIControlStateNormal];
[btnUncheck addTarget:self action:@selector(checkBoxClicked:) forControlEvents:UIControlEventTouchUpInside];
[view addSubview:btnUncheck]
-(void)checkBoxClicked:(id)sender{
if(favoriteChecked==NO)
{
[sender setImage:[UIImage imageNamed:@"YES.png"] forState:UIControlStateNormal];
favoriteChecked=YES;
}
else
{
[sender setImage:[UIImage imageNamed:@"NO.png"] forState:UIControlStateNormal];
favoriteChecked=NO;
}
}
Комментарии:
1. Пожалуйста, поместите код в правильной последовательности, поскольку я не могу понять, что вы указали в
tableView:cellForRowAtIndexPath:
методе и где он заканчивается. Пожалуйста, опубликуйте полный код. Это не помогает.
Ответ №1:
Преобразуйте вашего отправителя из типа идентификатора в тип кнопки с помощью UIButton *btn = (UIButton *)sender;
, а затем измените изображение на btn
.
Также измените [view addSubview:btnUncheck]
на [cell.contentView addSubview:btnUncheck];
, И для этого вам потребуется создать tableViewCell
Надеюсь, это поможет.
Ответ №2:
try this
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
UIButton *button = [UIButton buttonWithType:UIButtonTypeInfoLight];
button.frame = CGRectMake(3,8,30, 30);
[button setImage:[UIImage imageNamed:@"chack box1_selected_callback.png"] forState:0]
[button addTarget:self action:@selector(myAction:) forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:button];
}
Ответ №3:
в блоке
if(cell==nil)
{
//add the code here
}
Надеюсь, это поможет