扩展 UITableViewCell 重叠
Expanding UITableViewCell overlapping
我正在尝试创建一个 tableView,如果您点击一个单元格,它会展开并显示为按钮。到目前为止我遇到的问题是,如果我用按钮创建单元格然后说如果你按下它它应该只有全高它仍然显示按钮但它们与 [=32 中的下一个单元格重叠=]查看
在点击之前应该隐藏的单元格部分是否真的做到了?
这就是我在 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" 方法中选择的一样。
我得到的是一个 table 视图,其中第一个单元格完美显示其高度,然后按钮与下面的下一个单元格重叠的其余单元格。
(我想显示截图,但它说我需要 10 个声望才能这样做)
如果是这样我真的很感谢你的帮助
您应该实施 tableView:heightForRowAtIndexPath:
和 return 行高,这取决于单元格的状态(展开与否)。然后点击您的手机呼叫 [self.tableView reloadRowsAtIndexPaths:@[indexPathForYourCell]]
。为防止重叠,请为 clipsToBounds
属性 个单元格设置 YES。
我正在尝试创建一个 tableView,如果您点击一个单元格,它会展开并显示为按钮。到目前为止我遇到的问题是,如果我用按钮创建单元格然后说如果你按下它它应该只有全高它仍然显示按钮但它们与 [=32 中的下一个单元格重叠=]查看
在点击之前应该隐藏的单元格部分是否真的做到了?
这就是我在 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" 方法中选择的一样。
我得到的是一个 table 视图,其中第一个单元格完美显示其高度,然后按钮与下面的下一个单元格重叠的其余单元格。
(我想显示截图,但它说我需要 10 个声望才能这样做)
如果是这样我真的很感谢你的帮助
您应该实施 tableView:heightForRowAtIndexPath:
和 return 行高,这取决于单元格的状态(展开与否)。然后点击您的手机呼叫 [self.tableView reloadRowsAtIndexPaths:@[indexPathForYourCell]]
。为防止重叠,请为 clipsToBounds
属性 个单元格设置 YES。