Как указывается в комментариях, используя
[self presentViewController:about animated:YES completion:nil]
бы избавиться от навигационной панели и панели вкладок. Если вам нужно, чтобы держать их, вам нужно использовать
[self.navigationController pushViewController:about animated:YES];
EDIT:
Для того, чтобы иметь взаимодействие с пользователем отключено везде для о целях, за исключением, это немного сложнее: прежде всего, вы должны иметь все элементы пользовательского интерфейса, встроенные в представление, которое не является основным видом вашего представления контроллера представления.
Предположим, у вас есть только кнопка (кнопка «показать»), вы бы просто не разместили ее в своем главном представлении, но вы бы использовали другой вид (назовем его «внешним видом»), который просто размером с вид контроллера контроллера и где вы помещаете кнопку (вместе с любым другим элементом ui, который у вас может быть). Вам также нужен выход на этот внешний вид. Затем напишите такой метод, как:
-(void)userInteractionEnabled:(BOOL)enabled
{
self.navigationController.navigationBar.userInteractionEnabled = enabled;
self.tabBarController.tabBar.userInteractionEnabled = enabled;
self.outerView.userInteractionEnabled = enabled;
}
В качестве альтернативы вы можете просто отключить каждую «интерактивную» розетку вместо внешнего вида. Так, если, например, у вас есть 2 текстовых изображения, 3 кнопки и один UIPickerView, вы должны установить userInteractionEnabled = enabled
для каждой из этих точек (вместо того, чтобы делать это только для родительского представления).
Теперь в вашем методе ShowInfo вы можете иметь:
CGRect frame = CGRectMake(50, 50, 200, 200); //Use whatever origin and size you need
about.view.frame = frame;
[self.view addSubview:about.view];
[self userInteractionEnabled:NO]
И в методе btnClose вы можете просто положить:
[about.view removeFromSuperview];
[self userInteractionEnabled:YES];
Я надеюсь, что это помогает, дайте мне знать, если это то, что тебе нужно было!
P.S. Возможно, вы уже знаете об этом, но есть класс UIPopoverController
, доступный только для приложений iPad, что в значительной степени сделает все это за вас. Вы можете найти учебник о том, как его использовать. here.
addSubview отличается addChildViewController. Я имею в виду: вы можете создать экземпляр контроллера и добавить его представление (только представление) в другой контроллер. Первый контроллер все еще существует и управляет вашим представлением, даже если он не находится в исходной иерархии представления контроллера. Но для модальной презентации вы можете попробовать: '[self presentViewController: about animated: YES complete: nil]' – zbMax
Пробовал ли 'presentViewController' для представления viewcontroller как модального? –
да, но 'presentViewController' имеет черный фон .. но мне нужна прозрачность – Romowski