iOS项目,oc语言,原来页面是CreateOutboundViewController,点击按钮进入另外一个CreateOutboundDeletePopupView弹窗,在这个弹窗点击确定进行删除,向后台请求数据,删除之后自动关掉弹窗,删除成功,会把原来页面的按钮显示或隐藏,主要是后面这个怎么实现,原来页面的按钮显示或隐藏,详细一点,代码放在哪个文件里面也说一下
时间: 2024-03-20 17:42:11 浏览: 20
要实现删除之后自动关闭弹窗并显示或隐藏原来页面的按钮,可以采用代理模式来实现。
1. 定义一个代理协议,在弹窗的头文件中声明代理对象和代理方法:
```
@protocol CreateOutboundDeletePopupViewDelegate <NSObject>
- (void)deleteSuccessAndRefreshUI:(BOOL)isNeedRefresh;
@end
@interface CreateOutboundDeletePopupView : UIView
@property (nonatomic, weak) id<CreateOutboundDeletePopupViewDelegate> delegate;
@end
```
2. 在弹窗按钮的点击事件中,调用代理方法:
```
- (IBAction)deleteButtonClicked:(id)sender {
// 向后台请求数据,删除成功后调用代理方法
[self.delegate deleteSuccessAndRefreshUI:YES];
// 关闭弹窗
[self removeFromSuperview];
}
```
3. 在原来页面中,实现代理方法,根据传递的参数来显示或隐藏按钮:
```
@interface CreateOutboundViewController () <CreateOutboundDeletePopupViewDelegate>
@property (nonatomic, strong) UIButton *deleteButton;
@end
@implementation CreateOutboundViewController
- (void)viewDidLoad {
[super viewDidLoad];
// 创建删除按钮
self.deleteButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 100, 50)];
[self.deleteButton setTitle:@"删除" forState:UIControlStateNormal];
[self.deleteButton addTarget:self action:@selector(deleteButtonClicked) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:self.deleteButton];
}
- (void)deleteButtonClicked {
// 显示弹窗
CreateOutboundDeletePopupView *popupView = [[CreateOutboundDeletePopupView alloc] initWithFrame:self.view.bounds];
popupView.delegate = self;
[self.view addSubview:popupView];
}
#pragma mark - CreateOutboundDeletePopupViewDelegate
- (void)deleteSuccessAndRefreshUI:(BOOL)isNeedRefresh {
if (isNeedRefresh) {
// 删除成功,隐藏按钮
self.deleteButton.hidden = YES;
} else {
// 删除失败,显示按钮
self.deleteButton.hidden = NO;
}
}
@end
```
这样就完成了删除之后自动关闭弹窗并显示或隐藏原来页面的按钮的功能。代理协议可以定义在单独的文件中,也可以放在原来页面或弹窗的头文件中,具体实现方式可以根据实际情况选择。