2016-12-25 5 views
1

У меня есть основная раскадровка, и она добавляет представление из другого UIViewController в раскадровку на него как подвью, потому что я хочу, чтобы метод мог представить другой вид с помощью таймера.Как устранить прикосновение отключено при удалении subview?

Я могу добавить subview (со второго UIViewController), но когда я нахожусь близко, UIView удаляется, но я не могу щелкнуть нигде.

Чтобы отобразить второй вид раскадровки:

UIViewController* controller = [storyboard instantiateViewControllerWithIdentifier:@"MemberViewController"]; 

[viewController addChildViewController:controller]; 

controller.view.frame = controller.view.bounds; 

[viewController.view addSubview:controller.view]; 

[controller didMoveToParentViewController:viewController]; 

Чтобы скрыть подвид

+ (void)hideContentController: (UIViewController *) content 
{ 
    [content willMoveToParentViewController:nil]; // 1 
    [content.view removeFromSuperview]; // 2 
    [content removeFromParentViewController]; // 3 
} 

Обе вышеуказанные блоки кода находятся в NSObject

И у меня есть кнопка закрытия во втором представлении раскадровки и его классе UIViewController, который вызывает hideContentController в NSObject файл после нажатия кнопки закрытия.

Любая помощь будет оценена по достоинству.

+0

Попробуйте комментируя строки 1 и 3 в функции hide и попробуйте! Просто удаление 'UIView' обычно делает трюк для меня! – Rikh

+0

не работает, к сожалению .. – ASH

+0

Имеет ли 'UIViewController', который вы пытаетесь добавить в качестве подзаголовка, какие-либо' UIGestureRecognizers', которые занимают весь вид? – Rikh

ответ

0

Вы можете достичь его, как показано ниже:

Создать IBOutlet@property из btnClose кнопки в MemberViewController.h

Возьмите переменную MemberViewController* controller класса в вашей реализации SecondViewController.m класса:

//Write in your SecondViewController.m 
controller = [storyboard instantiateViewControllerWithIdentifier:@"MemberViewController"]; 
[controller.btnClose addTarget:self action:@selector(closeAction) forControlEvents:UIControlEventTouchUpInside]; 
[self.view addSubView: controller.view]; 

//Close Action method 
-(void)closeAction() 
{ 
[controller.view removeFromSuperView]; 
} 
+0

Я получаю это «NSInvalidArgumentException», причина: '- [UINavigationController btnClose]: непризнанный селектор, отправленный в экземпляр 0x11a08f000' – ASH

+0

Попытайтесь исправить эту проблему .. мне нужно посмотреть в этом. –

+0

Не подключайте селектор из раскадровки btnClose –