2010-11-10 3 views
0

Я бит-стек с созданием двух UIViews, которые можно переключить (каждый UIView имеет некоторые подвидности). Поскольку я не IB, я хочу сделать это программно.1 UIViewController и 2 переключения UIViews программно

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

 
if ([self.setView superview]) { 
    [self.setView removeFromSuperview]; 
    [self.view addSubview:contentView]; 
     self.navigationItem.title = @"BaseLine"; 
} else { 
    [self.contentView removeFromSuperview]; 
    self.view = setView; 
     self.navigationItem.title = @"Settings"; 
} 

но только то, что работает правильно, было «title», и ничего не появилось на UIViews. UIView, кажется, в порядке, потому что, когда я использую

 
self.view = contentView; 
or 
self.view = setView; 

оба показаны подсмотрами правильно.

Pls кто-то ударил меня в правильном направлении об этом.

Тпх

EDIT: указывает также решение, возможно, что-то не так с моей инициализации в loadView

 
CGRect screenRect = [[UIScreen mainScreen] applicationFrame]; 
    contentView = [[UIView alloc] initWithFrame:screenRect]; 
    setView = [[UIView alloc] initWithFrame:screenRect]; 

    self.view = contentView; 

Я попытался добавить его первым [я. просмотр добавить ..] но приложение упал, так что я использовал это

EDIT2

корневой контроллер UITableViewController..it в поле зрения навигации и после выбора ячейки этого UIVieController (percView) с двумя UIVies выделяется

 
    ShakeControl *percView = [[ShakeControl alloc] init]; 
    [self.navigationController pushViewController:percView animated:YES]; 
    [percView release]; 

EDIT3 переключатель осуществляется с помощью кнопки, но это нормально сделано, потому что я использовал это много раз, и он работал

ответ

3

Вот пример контроллера представления, который делает то, что вы хотите (я думаю) , Это очень просто, просто переключение между двумя видами с разными цветами. Но вы можете дополнительно настроить эти подпрограммы в методе loadView, чтобы отображать все, что вам нужно.

Интерфейс Файл:

@interface SwapViewController : UIViewController { 
    UIView *firstView; 
    UIView *secondView; 
    BOOL displayingFirstView; 
    UIButton *swapButton; 
} 
@property (nonatomic, retain) UIView *firstView; 
@property (nonatomic, retain) UIView *secondView; 
@property (nonatomic, retain) UIButton *swapButton; 

- (void)swap; 

@end 

Файл реализации:

#import "SwapViewController.h" 

@implementation SwapViewController 

@synthesize firstView; 
@synthesize secondView; 
@synthesize swapButton; 

- (void)loadView 
{ 
    CGRect frame = [[UIScreen mainScreen] applicationFrame]; 

    UIView *containerView = [[UIView alloc] initWithFrame:frame]; 
    containerView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 
    self.view = containerView; 
    [containerView release]; 

    frame = self.view.bounds; 
    firstView = [[UIView alloc] initWithFrame:frame]; 
    firstView.backgroundColor = [UIColor redColor]; 

    secondView = [[UIView alloc] initWithFrame:frame]; 
    secondView.backgroundColor = [UIColor blueColor]; 

    self.swapButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    self.swapButton.frame = CGRectMake(10, 10, 100, 50); 
    [swapButton addTarget:self action:@selector(swap) forControlEvents:UIControlEventTouchUpInside]; 

    displayingFirstView = YES; 
    [self.view addSubview:firstView]; 
    [self.view addSubview:swapButton]; 
} 

- (void)swap 
{ 
    if(displayingFirstView) { 
     [self.firstView removeFromSuperview]; 
     [self.view addSubview:secondView]; 

     displayingFirstView = NO; 
    } else { 
     [self.secondView removeFromSuperview]; 
     [self.view addSubview:firstView]; 

     displayingFirstView = YES; 
    } 
    [self.view bringSubviewToFront:self.swapButton]; 
} 

@end 
+0

Это код, из которого я изначально думал, что работает, но нет. – Vanya

+0

Вы инициализировали self.view, переопределив loadView? Предполагая, что self.view не равен нулю, его размер кадра и правильное расположение? –

+0

да я переопределяю loadView и self.view имеет представление с приложением Размер рамки – Vanya

0

пример кода;


BOOL firstview = YES; // First, I have added view1 as a subview; 

if (firstview) { 
    [view1 removeFromSuperview]; 
    [self.view addSubview:view2]; 
} else { 
    [view2 removeFromSuperview]; 
    self.view addSubview:view1]; 
} 
Смежные вопросы