在一个小型iOS应用程序上工作,我为我的UITableView创建了一个自定义的tableview单元格(以及它自己的类)。单元格中的两个内容是“添加”和“删除”按钮。单击这些时,我需要更新UITableView中的数组对象,但由于表格单元格是一个单独的类,如何将这些更改发送到UITableView类?
例如,下面的代码是我单元格上的“删除”按钮:
- (IBAction)decrementItem:(id)sender {
int count = (int)[self.specificItemCount.text integerValue];
//Cannot have negative amount of food
if(count == 0) {
return;
} else {
count--;
self.specificItemCount.text = [NSString stringWithFormat:@"%i",count];
}
但是当我点击该按钮时,我需要在表格视图中更新我的数组对象,我该怎么做?
答案 0 :(得分:0)
在您的tableview类将实现的单元类上定义一个协议。这是一个例子:http://www.tutorialspoint.com/ios/ios_delegates.htm。然后将tableview设置为单元格上的委托(确保使用弱引用)。
答案 1 :(得分:0)
使用委托或阻止。 如果您只有一个电池可以工作,我建议您使用一块。
定义块,在需要时调用
// CustomCell.h
@interface CustomCell : UITableViewCell
@property (nonatomic, copy) void(^addBlock)(NSString *text);
@property (nonatomic, copy) void(^removeBlock)(NSString *text);
@end
// CustomCell.m
- (IBAction)decrementItem:(id)sender {
int count = (int)[self.specificItemCount.text integerValue];
//Cannot have negative amount of food
if(count == 0) {
return;
} else {
count--;
self.specificItemCount.text = [NSString stringWithFormat:@"%i",count];
}
if (removeBlock) {
removeBlock(self.specificItemCount.text)
}
}
在内部编写所需的操作
// VC.m
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath == customIndexPath) {
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:customIdentifier forIndexPath:indexPath];
__weak typeof(self)weakSelf = self;
cell.removeBlock = ^(NSString *text) {
__strong typeof(weakSelf)strongSelf = weakSelf;
// operation
};
cell.addBlock = ^(NSString *text) {
__strong typeof(weakSelf)strongSelf = weakSelf;
// operation
};
return customCell;
}
// ······
}