IOS如何控制UIContainer视图的显示和消失? [英] iOS How to control the UIContainer View show and disappear?

查看:16
本文介绍了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视图在ParentViewControllerUIContainerView中显示和消失的好方法是什么?

我真的很感谢大家,你们能帮助我,比更好更好。

推荐答案

containerViewshow button位于不同的view控制器中。所以你不能只把它藏起来。实现它的简单方法是,当您在containerView中选择单元格时,显示ParentViewControllerContainerViewController中的视图将自动取消。

- (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视图的显示和消失?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆