2016-02-10 3 views
2

Я работаю над Prototype TableView Cell, где у меня есть две ярлыка над ячейкой и одна кнопка за ячейкой. Я хочу скрыть вторую метку на кнопке Hide Button. Я пробовал много, но не получили соответствующую информацию, Вот мой код для отображения меток в Cell:Скрыть метку из ячейки прототипа в TableView

- (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

Где '- (IBAction) скрывает ваш код? в 'viewcontroller', который держит' tableView' или внутри реализации TableViewCell? –

+0

- (IBAction) hide находится в моем классе tableView, а не в классе TableViewCell –

+0

Что такое gestureRecognizer в вашем - (IBAction) Скрыть метод? – Arun

ответ

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

2

В случае, если один КНОПКА В VIEWCONTORLLER ДЛЯ ВСЕХ CELL

Упакуйте одной кнопки переключая видимость UrduLabel, объявите -(IBAction)hide:(sender)id в yourviewcontroller.m. подключите 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; 
    

Thats как переключать видимость всех UrduLabel под одной IBAction.

ПРИ КАЖДОЙ КНОПКИ В КАЖДОЙ КЛЕТКИ

Существует лучший способ де-централизовать управление каждой ячейки. Переместите метод -(IBAction)hide:(sender)id в реализацию в реализации TableViewCell.

  1. Добавить IBAction от ниба/раскадровки до перемещенного метода -(IBAction)hide:(sender)id.
  2. Возьмите IBOutletUrduLabel, как видно в приведенном выше коде, это уже сделано.

Тогда реализация -(IBAction)hide:(sender)id будет следующее:

-(IBAction)hide:(sender)id 
{ 
    //put your other logic here (if any) 
    self.UrduLabel.hidden = YES; 
} 

Добро пожаловать на IOS, Happy кодирования.

+0

Спасибо Ratul Sir, его работа, но в Run Time ярлык Urdu автоматически скрывается без нажатия кнопки Hide :) Есть ли что-нибудь еще? –

+0

Пожалуйста, не называйте меня сэр, вы скрываете «UrduLabel» где-нибудь еще? дайте ярлыку цвет фона, чтобы отличить это: «ярлык» на самом деле скрыт или нет доступного текста, поэтому ярлык сначала скрывается. –

+0

Прекрасно, я утверждаю имя UrduLable как '_Urdu = @ [@ "Salam Habeebi"]' правильно и в heightForRowAtIndexPath() возвращаемый тип: "UITableViewAutomaticDimension". Я думаю, что есть ошибка в обратном типе, потому что когда я исправил его 0, тогда размер ячейки стал 0 (ноль) во время выполнения! –