iOS How to control the UIContainer View show and disappear?(IOS如何控制UIContainer视图的显示和消失?)
问题描述
我有一个UIViewController
和一个UIContainer
视图。
我想模拟UIAlertView
效果,但我不知道如何生成关于这个伟大方法的容器视图显示和隐藏。
我已将UITableView
放在我的UIContainer
视图中,我使用委托将所选项目发送到UIViewController
(ParentViewController
)并显示在标签中。(段名用alertSegue
)
ParentViewController
中有一个显示按钮,我需要点击选中的项目,它将关闭(隐藏/取消?)UIContainer
视图。
现在UIContainer
视图默认设置为隐藏,StoryBaord屏幕截图如下:
我的ParentViewController.h
@interface ViewController : UIViewController<ContainerViewBLETableDelegate>
@property (weak, nonatomic) IBOutlet UIButton *btn;
- (IBAction)btnAction:(id)sender;
@property (weak, nonatomic) IBOutlet UILabel *lb;
@property (weak, nonatomic) IBOutlet UIView *containerView;
-(IBAction)unwindSegue:(UIStoryboardSegue *)segue;
@end
.m文件:
- (void)viewDidLoad {
[super viewDidLoad];
}
- (IBAction)btnAction:(id)sender {
_containerView.hidden = NO;
}
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if( [segue.identifier isEqualToString:@"alertSegue"])
{
ContainerViewBLETable *vc = segue.destinationViewController;
vc.delegate = self;
}
}
-(void) ContainerViewBLETable:(ContainerViewBLETable *)vc andSelectedDone:(NSString *)selectedStr
{
self.lb.text = selectedStr;
vc.view.hidden = YES;
}
-(IBAction)unwindSegue:(UIStoryboardSegue *)segue
{
}
容器查看器控制器.h:
@class ContainerViewBLETable;
@protocol ContainerViewBLETableDelegate <NSObject>
-(void) ContainerViewBLETable:(ContainerViewBLETable*)vc andSelectedDone:(NSString*)selectedStr;
@end
@interface ContainerViewBLETable : UIViewController<UITableViewDataSource,UITableViewDelegate>
@property(nonatomic,assign) id<ContainerViewBLETableDelegate>delegate;
@property (weak, nonatomic) IBOutlet UITableView *tableVW;
@end
UIContainerView.m部分:
.....
-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[self.delegate ContainerViewBLETable:self andSelectedDone:[NSString stringWithFormat:@"%ld",indexPath.row]];
}
.....
虽然此代码可以将值传递给UIViewController
(ParentViewController
),UIContainer
视图被隐藏,但当我再次单击Show按钮时,没有任何效果(我感觉容器视图重叠导致触摸失效)。
(顺便说一句,我试过
[self.parentViewController dismissViewControllerAnimated:YES completion:nil];
无效)
问题:
如何使用代理隐藏容器视图,并且可以再次触摸显示按钮显示容器?
控制UIContainer
视图在ParentViewController
和UIContainerView
中显示和消失的好方法是什么?
我真的很感谢大家,你们能帮助我,比更好更好。
推荐答案
containerView
和show button
位于不同的view控制器中。所以你不能只把它藏起来。实现它的简单方法是,当您在containerView
中选择单元格时,显示ParentViewController
,ContainerViewController
中的视图将自动取消。
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[self.delegate ContainerViewBLETable:self andSelectedDone:[NSString stringWithFormat:@"%ld",indexPath.row]];
ParentViewController *vc = [[self storyboard] instantiateViewControllerWithIdentifier:@"ParentViewController"];
[self presentViewController:vc animated:YES completion:nil];
}
要显示容器,您只需取消ParentViewController
该表示。
1.
- (IBAction)btnAction:(id)sender
{
[self.presentingViewController dismissModalViewControllerAnimated:YES];
}
或 2.设置Segue以关闭viewController,并使用prepaareForSegue让Delegate与其他view控制器进行通信。
同时删除vc.view.hidden = YES
您已实现的委托
-(void) ContainerViewBLETable:(ContainerViewBLETable *)vc andSelectedDone:(NSString *)selectedStr.
这篇关于IOS如何控制UIContainer视图的显示和消失?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!