在TableView中隐藏原型单元格中的Label

时间:2016-02-10 10:52:38

标签: ios objective-c uitableview cell

我正在使用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方法有什么问题?

2 个答案:

答案 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方法。

然后按照以下步骤

  1. 在视图控制器中声明BOOL property变量或ivar。名为willShowUrdu

  2. 按如下方式实施hide

    -(IBAction)hide:(id)sender
    {
        willShowUrdu = !(willShowUrdu);
        [yourTableView reloadData];
    }
    
  3. cellForRowAtIndexPath:

    TableViewCell *cell = //whatever the way you get the cell
    cell.UrduLabel.hidden = !willShowUrdu;
    
  4. 如何将所有UrduLabel的可见性切换为IBAction

    在每个小区的每个按钮的情况下

    有一种更好的方法可以将控制分散到每个单元格。将-(IBAction)hide:(sender)id方法移至TableViewCell实现中的实现。

    1. 将nib / storyboard中的IBAction添加到移动的-(IBAction)hide:(sender)id方法。
    2. 获取IBOutlet的{​​{1}},如上面的代码所示,它已被拍摄。
    3. 然后UrduLabel的实施将遵循:

      -(IBAction)hide:(sender)id

      欢迎来到IOS,快乐编码。