通过在单个表格视图中按钮点击来动态添加tableview单元格
问题描述:
i。我尝试了很多,但无法成功执行。二,在tableview单元格中,有3 3个字段需要显示。一个图像视图,button1 - >拍照按钮,按钮2 --->浏览按钮。 iii。第一次tableview应该显示一行自定义单元格。 iv。当用户点击位于tableview之外的“添加新按钮”时,将创建一个新行,所有以上3个字段(图像视图,按钮1,按钮2) v。“添加新按钮”的点击次数,将创建新的行数超过3个字段。 vi。我可以通过包含上述3个字段的简单图像视图成功动态创建上述所有内容,但无法成功处理自定义单元格。通过在单个表格视图中按钮点击来动态添加tableview单元格
vii。再次,我需要设置每个单元格的标签,broswe按钮,拍照按钮,以便点击时,将采取标签值。
答
表视图通过添加委托和数据源来工作。假设你的表视图拥有一个所有者作为视图控制器,并且委托和数据源都是视图控制器本身。所有你需要做的就是实现这些数据源方法来返回一个合适的数据,那么你应该在表视图上调用reloadData
,或者如果你想多做一些额外的工作来查看更好的检查如何添加动画周围的网络行。
这是一个非常简单但没有优化的例子,但非常简短,易于阅读。我希望它能帮助你走上正确的轨道:
@interface MyViewController()<UITableViewDataSource, UITableViewDelegate>
@property UITableView *tableView;
@property NSArray *myCells;
@end
@implementation MyViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.tableView.delegate = self; // could be done in storyboard
self.tableView.dataSource = self; // could be done in storyboard
[self addACell];
}
- (void)addCellButtonPressed:(id)sender {
[self addACell];
}
- (void)addACell {
MyCell *cell = [[MyCell alloc] init];
[cell.button1 addTarget:self action:@selector(cellButton1Pressed:) forControlEvents:UIControlEventTouchUpInside];
[cell.button2 addTarget:self action:@selector(cellButton2Pressed:) forControlEvents:UIControlEventTouchUpInside];
self.myCells = [self.myCells arrayByAddingObject:cell];
[self.tableView reloadData]; // will call the delegate again and refresh cells
}
- (void)cellButton1Pressed:(id)sender {
MyCell *cellPressed = nil;
for(MyCell *cell in self.myCells) {
if(cell.button1 == sender) {
cellPressed = cell;
break;
}
}
// do whatever
}
- (void)cellButton2Pressed:(id)sender {
MyCell *cellPressed = nil;
for(MyCell *cell in self.myCells) {
if(cell.button2 == sender) {
cellPressed = cell;
break;
}
}
// do whatever
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return self.myCells.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
return self.myCells[indexPath.row];
}
@end
你需要更清楚。请参阅此处发布的其他问题并重构您的问题。 – Adithya