我正在使用Prototype TableView Cell,我在单元格后面有两个Label,在单元格后面有一个按钮。我想在Hide Button click上隐藏第二个标签。我已经尝试了很多,但没有得到任何适当的信息,这是我在单元格中显示标签的代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *simpleTableIdentifier = @"TableCell";
TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
// Configure the cell...
int row = [indexPath row];
cell.EnglishLable.text = _English[row];
cell.UrduLable.text = _Urdu[row];
return cell;
}
一切都很好,我只需要隐藏' UrduLabel'在我的隐藏IBAction方法中。
- (IBAction)Hide:(id)sender {
static NSString *simpleTableIdentifier = @"TableCell";
UITableView *tableView = [[UITableView alloc]init];
CGPoint location = [gestureRecognizer locationInView:self.tableView];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:location];
UITableViewCell *cell = [tableView cellForRowAtIndexPath:IndexPath];
BOOL *hideLabel;
hideLabel = YES;
[self.tableView reloadData];
UILabel *subtitle = (UILabel *)[cell.contentView viewWithTag:1];
subtitle.hidden = hideLabel;
}
我的Button方法有什么问题?
答案 0 :(得分:3)
试试此代码
- (IBAction)Hide:(id)sender {
CGPoint location = [gestureRecognizer locationInView:self.tableView];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:location];
TableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
cell.UrduLable.hidden = YES;
[tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:<any row animation you need>];
UILabel *subtitle = (UILabel *)[cell.contentView viewWithTag:1];
subtitle.hidden = hideLabel;
}
您只需要获取单击按钮的特定单元格,隐藏所需的标签并重新加载特定单元格。主要的是你需要获得原型单元类的实例,而不是UITableViewCell
答案 1 :(得分:2)
在所有细胞的VIEWCONTORLLER中的一个按钮
单一按钮切换UrduLabel
的可见性,在-(IBAction)hide:(sender)id
中声明yourviewcontroller.m
。将nib / storyboard中按钮的IBAction
连接到-(IBAction)hide:(sender)id
方法。
然后按照以下步骤
在视图控制器中声明BOOL
property
变量或ivar
。名为willShowUrdu
。
按如下方式实施hide
:
-(IBAction)hide:(id)sender
{
willShowUrdu = !(willShowUrdu);
[yourTableView reloadData];
}
在cellForRowAtIndexPath:
TableViewCell *cell = //whatever the way you get the cell
cell.UrduLabel.hidden = !willShowUrdu;
如何将所有UrduLabel
的可见性切换为IBAction
。
在每个小区的每个按钮的情况下
有一种更好的方法可以将控制分散到每个单元格。将-(IBAction)hide:(sender)id
方法移至TableViewCell
实现中的实现。
-(IBAction)hide:(sender)id
方法。IBOutlet
的{{1}},如上面的代码所示,它已被拍摄。然后UrduLabel
的实施将遵循:
-(IBAction)hide:(sender)id
欢迎来到IOS,快乐编码。