iOS项目,oc语言,原来页面是CreateOutboundViewController是个tableview,大概是个表单页面,点击按钮进入另外一个CreateOutboundDeletePopupView弹窗,在这个弹窗点击确定向后台请求数据,之后关掉弹窗,主要是后面这个怎么实现,请求数据成功怎么让他的每个tableviewcell里面的button按钮显示,原来的表单里面button按钮隐藏了不能选,但删除之后可以选,详细一点,代码放在哪个文件里面也说一下,用代理方法
时间: 2024-03-20 16:45:21 浏览: 69
首先,在CreateOutboundViewController中,你需要在点击删除按钮的时候弹出CreateOutboundDeletePopupView弹窗。可以通过在按钮的点击事件中创建弹窗视图并将其添加到当前视图上来实现:
```objc
- (IBAction)deleteButtonTapped:(id)sender {
CreateOutboundDeletePopupView *deletePopupView = [[CreateOutboundDeletePopupView alloc] initWithFrame:self.view.frame];
deletePopupView.delegate = self;
[self.view addSubview:deletePopupView];
}
```
接下来,你需要在CreateOutboundDeletePopupView中添加一个确定按钮,并在点击确定按钮时触发向后台请求数据的操作。可以通过在确定按钮的点击事件中调用代理方法来实现:
```objc
- (IBAction)confirmButtonTapped:(id)sender {
// 向后台请求数据并删除
// ...
// 关闭弹窗
[self removeFromSuperview];
// 调用代理方法,通知CreateOutboundViewController删除成功
if ([self.delegate respondsToSelector:@selector(deleteSuccessful)]) {
[self.delegate deleteSuccessful];
}
}
```
在CreateOutboundViewController中,需要实现代理方法deleteSuccessful,该方法将在CreateOutboundDeletePopupView中的确定按钮被点击后被调用。在该方法中,你需要更新tableview的cell,将删除后的cell的button按钮显示出来。可以通过刷新tableview来实现:
```objc
- (void)deleteSuccessful {
// 更新tableview
[self.tableView reloadData];
}
```
在tableview的cell中,你需要根据cell的状态来判断是否显示button按钮。可以通过在cellForRowAtIndexPath代理方法中设置cell的状态来实现:
```objc
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
// 根据cell的状态来设置button按钮是否显示
if (cell.isSelected) {
cell.button.hidden = NO;
cell.userInteractionEnabled = YES;
} else {
cell.button.hidden = YES;
cell.userInteractionEnabled = NO;
}
return cell;
}
```
在CreateOutboundViewController中,你可以在网络请求成功后调用reloadData方法刷新tableview,并在代理方法deleteSuccessful中调用该方法:
```objc
- (void)deleteSuccessful {
// 向后台请求数据并删除
// ...
// 更新tableview
[self.tableView reloadData];
}
```
最后,你需要在CreateOutboundDeletePopupView中添加一个代理属性,并在CreateOutboundViewController中实现该代理协议:
```objc
@protocol CreateOutboundDeletePopupViewDelegate <NSObject>
- (void)deleteSuccessful;
@end
@interface CreateOutboundDeletePopupView : UIView
@property (nonatomic, weak) id<CreateOutboundDeletePopupViewDelegate> delegate;
@end
```
这样,当你在CreateOutboundDeletePopupView中的确定按钮被点击后,就可以调用代理方法通知CreateOutboundViewController删除成功,然后更新tableview的cell,将删除后的cell的button按钮显示出来。
阅读全文