1 UIViewController и 2 переключаемых UIViews программно - PullRequest
0 голосов
/ 10 ноября 2010

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

Я попытался добавить свои подпредставления в мой первый 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";
 }

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

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

, оба показывают подпредставления правильно.

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

tnx

РЕДАКТИРОВАТЬ: Также указав решение, возможно, что-то не так с моей инициализацией в loadView

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

    self.view = contentView;

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

EDIT2

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

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

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

Ответы [ 2 ]

3 голосов
/ 10 ноября 2010

Вот пример контроллера представления, который делает то, что вы хотите (я думаю).Это очень просто, просто переключение между двумя видами с разным цветом фона.Но вы можете дополнительно настроить эти подпредставления в методе 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 голосов
/ 10 ноября 2010

пример кода;


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];
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...