iOS项目,oc语言,原来页面是CreateOutboundViewController是个tableview,点击按钮进入另外一个CreateOutboundDeletePopupView弹窗,在这个弹窗点击确定进行删除,向后台请求数据,删除之后自动关掉弹窗,主要是后面这个怎么实现,删除成功怎么让他的tableviewcell里面的按钮显示,详细一点,代码放在哪个文件里面也说一下
时间: 2024-03-20 15:44:23 浏览: 74
一个漂亮的前端弹窗,包含关闭按钮,样式清晰好看,可关闭弹窗
3星 · 编辑精心推荐
要实现删除成功后让 `CreateOutboundViewController` 中的按钮显示,你可以在 `CreateOutboundDeletePopupView` 中添加一个代理方法,并在 `CreateOutboundViewController` 中实现这个代理方法。当从 `CreateOutboundDeletePopupView` 中删除成功后,就可以调用 `CreateOutboundViewController` 中的代理方法,来更新 `CreateOutboundViewController` 中的按钮状态。
具体的实现步骤如下:
1. 在 `CreateOutboundDeletePopupView` 中添加一个代理方法,例如:
```
@protocol CreateOutboundDeletePopupViewDelegate <NSObject>
- (void)outboundRecordDeleted;
@end
@interface CreateOutboundDeletePopupView : UIView
@property (nonatomic, weak) id<CreateOutboundDeletePopupViewDelegate> delegate;
// ...
@end
```
2. 在 `CreateOutboundDeletePopupView` 中,在成功删除后调用代理方法:
```
if (deleteSuccess) {
[self.delegate outboundRecordDeleted];
}
```
3. 在 `CreateOutboundViewController` 中实现代理方法:
```
@interface CreateOutboundViewController () <CreateOutboundDeletePopupViewDelegate>
// ...
@end
@implementation CreateOutboundViewController
- (void)outboundRecordDeleted {
// 更新按钮状态
[self.tableView reloadData];
// 关闭弹窗
[self.popupView dismiss];
}
// ...
@end
```
4. 将 `CreateOutboundViewController` 对象设置为 `CreateOutboundDeletePopupView` 的代理:
```
CreateOutboundDeletePopupView *popupView = [[CreateOutboundDeletePopupView alloc] init];
popupView.delegate = self;
```
5. 在 `CreateOutboundViewController` 的 `cellForRowAtIndexPath` 方法中更新按钮状态:
```
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// ...
UIButton *deleteButton = [cell viewWithTag:1];
deleteButton.hidden = outboundRecord.deleted;
// ...
}
```
注意,如果你的 `CreateOutboundViewController` 中的数据源是从后台获取的,那么你在成功删除后,还需要向后台重新请求数据并刷新表格,以确保表格数据与后台同步。关于代码放在哪个文件中,以上实现是在 `CreateOutboundViewController` 和 `CreateOutboundDeletePopupView` 两个文件中实现的。
阅读全文