2012-01-04 2 views
1

Я создал подкласс UIViewController. В этом у меня есть два свойства:Использование UISegmentedControl для переключения между двумя видами

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

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

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

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

ответ

0

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

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

1

Написать метод действия для UISegmentedControl и implemnt способом, как показано ниже

- (IBAction) selectMessageType {

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

switch (msgOptionControl.selectedSegmentIndex) { 

    case 0: 

// Код для view1 перерыва;

case 1: 

// код для просмотра2 break;

case 2: 

// Код для View3 перерыва;

case 3; 
     //code for view4 
     break; 


    default: 
     break; 

} 

}

0

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

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

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