2009-06-06 1 views
3

Я видел сообщение для How to switch views by buttons on iPhone?, но это не говорит о том, как переключаться между представлениями с помощью кнопок. Человек, который задал вопрос, решил ответить, что они могут переключаться между представлениями с помощью uinavigationcontroller.переключатель между uiviews с кнопками, а не контроллерами uinavigation

Я поместил следующий код в ibaction, который начинается, когда кнопка нажата в основном представлении.

  PhoneNumberViewController *phoneNumberViewController1 = [[PhoneNumberViewController alloc] initWithNibName:@"PhoneNumberView2" bundle:nil]; 
self.phoneNumberViewController = phoneNumberViewController1; 
[self.view removeFromSuperview]; 
[self.view insertSubview: phoneNumberViewController1.view atIndex:0]; 

Когда этот код выполняет весь вид, он просто пуст. Если я опускаю часть removefromsuperview, тогда вид исчезает за моей кнопкой, но кнопка все еще остается. Я не уверен, что это правильный способ переключения между кнопками, но если кто-нибудь знает, как это сделать, пожалуйста, помогите. Также, если кто-нибудь знает о каких-либо примерах проектов, которые переключаются между представлениями с помощью кнопок, дайте мне знать.

Спасибо, миллион!

ответ

2

Вы удалили представление контроллера вида из его супервизора, а затем добавили к нему подпрограмму. Иерархия представлений разбита на супервизор контроллера представления (вероятно, ваше окно). Вот почему вы получаете пустой экран.

Возможно, вам захочется сохранить ссылку на исходное представление, а затем перевести его в новое представление, установив представление режима просмотра в новое представление.

// origView is an instance variable/IBOutlet to your original view. 
- (IBAction)switchToPhoneView:(id)sender { 
    if (origView == nil) 
    origView = self.view; 
    self.view = phoneViewController.view; 
} 

- (IBAction)switchToOriginalView:(id)sender { 
    self.view = origView; 
} 
+0

Я на самом деле сделал это из AppDelegate и все получилось. Он основан на этом сообщении: http://www.iphonedevsdk.com/forum/iphone-sdk-development/4052-have-someone-example-uibutton-switch-view-i-am-despair.html. Я определенно думаю, что ваш путь более чист. – Atma

1

Методика Я обычно использую предполагает создание класса SuperView, который содержит панель инструментов в нижней части, и содержание класс представления UIView заполнения остальной части экрана.

Затем я добавляю subviews в представление содержимого, чтобы изменить представления на основе щелчков кнопок. Такой подход делает так, что панель инструментов одинакова для всех видов. Я начинаю с определения вспомогательной функции, как это:

-(void) clearContentView { 
    //helper to clear content view 
    for (UIView *view in [self.contentView subviews]){ 
     [view removeFromSuperview]; 
    } 
} 

My IBAction будет выглядеть следующим образом:

-(IBAction) buttonClicked{ 
    self.title = @"Images"; //change title of view 
    [self clearContentView]; //clear content view 
    [self.contentView addSubview:self.imagesViewController.view]; //add new view 
    [self.imagesViewController viewWillAppear:YES]; //make sure new view is updated 
    [self enableButtons]; //enable all other buttons on toolbar 
    self.imagesButton.enabled = NO; //disable currently selected button 
} 
Смежные вопросы