2017-02-14 3 views
0

У меня есть два контроллера вида, которые одинаковы, единственное различие заключается в том, что сначала отображается карта, а другая не отображается.Изменить UIViewcontroller с помощью оператора if

В этом случае у меня есть сегментированный элемент управления, где в сегменте 0 отображается контроллер View с помощью mapView, но у меня есть другие данные, которые не содержат информации, отображаемой в mapview. Я хотел бы знать, как я мог это сделать (с утверждением if или что-то подобное), поскольку другой UIView не имеет выхода.

View Controller with mapview

Infos

+0

Можете ли вы установить ограничение по высоте на 0, когда вы не хотите отображать вид карты? –

+0

@ J.Wang да, но появляется множество ограничений конфликта после установки – breadevelopment

+0

Не должно быть, если вы правильно их установили. Каковы конфликты? –

ответ

0

Вы можете установить высоту MAPview 0, если вы хотите, чтобы скрыть это. Нравится:

mapView.frame.size.height = 0 
1

Это по существу плохая практика. Если вашему приложению нужны 2 или более экранов с похожим дизайном, вы должны использовать только один просмотр/сцену. Таким образом, если происходит изменение дизайна, вам нужно только один раз изменить его.

2 viewcontrollers с разницей только видимости карты не сложно скопировать. Вы просто объявить свойство BOOL для этого viewcontrollerA так:

@property (nonatomic, assign) BOOL isMapVisible; 

Тогда на viewDidload на viewControllerA, установить видимость этой карты путем:

if (!_isMapVisible) { 
    [_mapView setHidden = YES]; 
} 

Вызывающий абонент ViewController затем реализует prepareForSegue и установить _isMapVisible соответственно перед выполнением segue для просмотраControllerA.

+0

Если я использую это, мое представление будет пустым? – breadevelopment

+0

На самом деле я не уверен, чего вы хотите. Это просто пример того, как использовать одиночный Viewcontroller и отображать данные на них по-разному на основе вызывающего. в выражении if вам нужно написать собственный метод - например, поместить все объекты, связанные с mapView, в другой UIView, а затем установить ограничение по высоте этого UIView на 0 в этом операторе if. И это, если вы используете Constraints вообще. Если вы не используете ограничения, вы должны вручную расположить вещи. Есть много возможностей, вам нужно дать больше информации о вашем коде/раскадровке. – GeneCode

Смежные вопросы