Использование UISegmentedControl для переключения между двумя представлениями - PullRequest
1 голос
/ 04 января 2012

Я создал подкласс UIViewController. В нем у меня есть два свойства:

@property (nonatomic, retain) IBOutlet UIView *presetsView;
@property (nonatomic, retain) IBOutlet UIView *customView;

Я добавил новый UIView в свой .xib и добавил в него некоторые элементы пользовательского интерфейса. Я хочу скрыть один вид и показать другой в зависимости от того, когда нажата UISegmentedControl.

Мой вопрос в Интерфейсном Разработчике, в моем исходном представлении, предоставленном мне IB, к нему уже подключена розетка с Владельцем файла. Поскольку у меня есть два собственных вида, предустановки и пользовательские настройки, как я могу выполнить выходные соединения в IB?

Я попытался удалить исходный вид, предоставленный IB, и перетащил два новых UIViews на холст. Затем я подключил розетку к каждому. Когда я нажимаю мой новый viewController, я получаю сообщение об ошибке, что нет представления для моего viewController. Затем, когда я подключаю владельца файла к выходу «view», который отображается для представления, которое я хочу показать первым, приложение запускается. Я не был уверен, что это был правильный путь, и почему это будет правильный путь. Всегда ли ViewController нужен выход .view для него? Поэтому мне нужно было это сделать? Спасибо.

Ответы [ 3 ]

1 голос
/ 04 января 2012

Записать метод действия для UISegmentedcontrol и метод реализма, как показано ниже

- (IBAction) selectMessageType {

noResultsPriview.hidden = YES;
//[activityIndicator startAnimating];

switch (msgOptionControl.selectedSegmentIndex) {

    case 0:

// код для разрыва представления1;

    case 1:

// код для view2 break;

    case 2:

// код для view3 break;

    case 3;
        //code for view4
        break;


    default:
        break;

}

}

0 голосов
/ 04 января 2012

Да, каждый UIViewController имеет один корневой вид.Он должен иметь возможность создавать это представление, когда вызывается его метод -loadView, либо загружая это представление из файла пера (и в результате устанавливая его свойство view), либо создавая его программно.

Inв вашем случае оставьте представление свойства view в покое и не пытайтесь поменять его местами.Это корневое представление уже будет добавлено в окно, и изменение ссылки контроллера на указание на какой-либо другой объект вызовет путаницу и неопределенное поведение.Вместо этого добавьте оба ваших представления в качестве подпредставлений корневого представления контроллера и затем спрячьте или покажите при необходимости.

0 голосов
/ 04 января 2012

UIViewController должен иметь действительный UIView, поэтому в вашем случае это может быть original UIView, созданный во время создания XIB. Ваши два свойства UIView правильны. Все, что вам нужно сделать, это настроить в IB соединение между вашим presetsView и original UIView, чтобы впоследствии вы могли вернуться к нему, а затем вам необходимо подключить customView к другому UIView.

Таким образом, после того, как вы закончите, ваш исходный UIView будет иметь два соединения, одно как UIViewController (владелец), а другое как presentsView.

Эти соединения являются только указателями, так что вы можете использовать их для манипулирования объектами в UIViewController.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...