2015-04-18 2 views
1

Я пытаюсь создать tableView, где, если вы нажимаете на ячейку, она расширяется и показывает кнопки. Проблема, которую я имел до сих пор, заключается в том, что если я создаю ячейку с помощью кнопок, а затем скажу, что она должна иметь только высоту, если вы нажмете на нее, она все еще показывает кнопки, но они перекрываются со следующими ячейками в таблицеViewРасширение UITableViewCell перекрытие

Есть ли что-то, что часть ячейки, которая должна быть скрыта до нажатия, на самом деле делает это?

Это то, что я имею в viewController.m ExpandingCell.h вы найдете ниже

#import "ViewController.h" 
#import "ExpandingCell.h" 

@interface ViewController() <UITableViewDelegate, UITableViewDataSource> 

@property (copy, nonatomic) NSArray *titleArray; 
@property (strong, nonatomic) IBOutlet UITableView *tableView; 

@end 

@implementation ViewController 

ExpandingCell *cell; 
int selectedIndex = -1; 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    self.titleArray = @[@"Apple", @"Orange", @"Banana", @"Kiwi", @"Melon", @"Strawberry", @"Blueberry", @"Peach"]; 

} 

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    return [self.titleArray count]; 
} 

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString *CellIdentifier = @"expandingCell"; 

    cell = (ExpandingCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 


    cell.titleLabel.text = self.titleArray[indexPath.row]; 

    return cell; 
} 

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 

    if (indexPath.row == 0) { 
     return 94; 
    } else { 
     return 54; 
    } 
} 

@end 

ExpandCell.h лишь некоторые ярлыки и кнопки, которые находятся на мобильный

#import <UIKit/UIKit.h> 

@interface ExpandingCell : UITableViewCell 

@property (strong, nonatomic) IBOutlet UILabel *titleLabel; 
@property (strong, nonatomic) IBOutlet UILabel *scoreLabel; 
@property (strong, nonatomic) IBOutlet UILabel *backgroundLabel; 

@end 

только для текстовой цели. Я установил первую ячейку, как если бы она была выбрана в: tableView: (UITableView *) tableView heightForRowAtIndexPath: (NSIndexPath *) indexPath "Method.

то, что я получаю, представляет собой табличный вид, где первая ячейка отлично отображает с ее высотой, а затем остальные ячейки, где кнопки перекрываются над следующей ячейкой ниже.

(Я хотел показать скриншот, но он говорит, мне нужно 10 репутации, чтобы сделать это)

Если это так я очень благодарен за помощь

+0

, пожалуйста, загрузите код, чтобы мы вам помогли. –

+0

Как вы меняете высоты своих ячеек? Вы перезагружаете их и начинаете возвращать разные высоты в heightForCellAtIndexpath? –

+0

Вы можете ссылаться на скриншот. Являются ли метки и кнопки добавлены в раскадровку/XIB? Попробуйте настроить представление содержимого ячейки для подзапроса клипов. – Wain

ответ

3

Вы должны осуществить tableView:heightForRowAtIndexPath: и вернуть высоту для строки, зависит от состояния вашей ячейки (расширенной или нет). Затем после нажатия на ваш сотовый звонок [self.tableView reloadRowsAtIndexPaths:@[indexPathForYourCell]]. Чтобы предотвратить перекрытие, установите YES для clipsToBounds свойства ваших ячеек.

+0

Благодарим за помощь. Настройка свойства clipToBounds для YES решила все до сих пор. – Lumbrjck

Смежные вопросы