我有UIButton
我希望仅在UITableViewCell
的某些情况下出现。根据用户输入的信息,该按钮将可供他们使用。但是,当我删除具有可见按钮的单元格时,显示指令的默认单元格仍保留不需要的可见按钮。
以下是CellForRowAtIndexPath:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"a" forIndexPath:indexPath];
UIButton *subtractPill = [UIButton buttonWithType:UIButtonTypeSystem];
[subtractPill setTitle:@"I took a pill." forState:UIControlStateNormal];
[cell addSubview:subtractPill];
[subtractPill addTarget:self
action:@selector(subtractPill:)
forControlEvents:UIControlEventTouchUpInside];
if (self.delegate.medicineList.count==0){
subtractPill.hidden=YES; //This code does not hide button.
self.defaultText = @"Tap \"+\" button to add medicine.";
cell.textLabel.text = self.defaultText;
cell.detailTextLabel.text = @" ";
return cell;
}
else{
subtractPill.frame = CGRectMake(175.0f, 5.0f, 100.0f, 30.0f);
cell.detailTextLabel.text = [NSString stringWithFormat:@"%i pills remaining.", temp.CurrentNumOfPieces];
}
return cell;
}
这是我的Subtract Pill按钮的代码:
- (void)subtractPill:(id)sender
{
NSIndexPath *indexPath =
[self.tableView indexPathForCell:(UITableViewCell *)[[sender superview] superview]];
NSUInteger row = indexPath.row;
Medicine *x = [self.delegate.medicineList objectAtIndex:row];
[x decreaseBy:1];
[self.tableView reloadData];
}
这是我在tableview中编辑和删除单元格的代码。
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
// Return NO if you do not want the specified item to be editable.
if (self.delegate.medicineList.count==0) {
return NO;
}
return YES;
}
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
[self.delegate.medicineList removeObjectAtIndex:indexPath.row];
[self.tableView reloadData];
}
截至目前,默认单元格显示“点击+按钮添加药物”。删除该单元格时重叠SubtractPill按钮。换句话说,当删除包含按钮的单元格时,该按钮不会变得不可见。 我也尝试更改按钮的框架,使其在屏幕上不可见,但这也不起作用。我在研究了类似的问题后来到这里,并得出结论,按钮的隐藏属性有一个我不知道的故障或特征。任何帮助将不胜感激!
答案 0 :(得分:0)
好吧,似乎我回答了我自己的问题:我只是把隐藏的财产放在错误的地方。我仍然不完全理解为什么它不起作用,但是当我将隐藏属性放在tableview的编辑和删除方法中时,按钮不再出现。