A principal regra para o desenvolvimento para iPhone é: Uma janela e muitas views. Se você manter isto em mente, desenvolver a interface gráfica é muito simples. No SDK 3.0 este conceito é bem marcante. Como já foi dito anteriormente, toda interface é desenvolvida usando o IB. Observando nossa aplicação iPhoneHello, na pasta Resource existem 3 arquivos com extensão .xib. FlipsideView, MainView e MainWindow. Internamente, é a MainWindow que controla a exibição das views que no caso são a FlipsideView e a MainView. Você pode colocar várias views dentro de um mesmo arquivo de view. O que isto quer dizer? Dentro do MainView, por exemplo, nós podemos ter mais de uma view, e podemos navegar por elas. Outra maneira de termos mais views é criarmos classes separadas para elas, como foi feito para o FlipsideView e o MainView. Particularmente, prefiro criar várias views dentro de um único arquivo.
Criando uma view no IB
Para criar uma view, vamos até o IB. Para isso dê um duplo click no arquivo MainView.xib.

Na janela Library, selecione Windows, Views & Bars. Arraste o componente View para dentro da janela MainView.xib. Fazendo isto você já terá inserido uma nova view dentro do formulário MainView.xib.
Após ter feito esta operação, convém batizarmos esta nova view, para que seja mais compreensivo nossa tarefa de programar. Vamos chamar esta nova view de NewView. Para isso de um duplo click em cima da nova view, isto fará com que esta view seja aberta, vá até o Inspector, selecione a opção Identity e no item Name (que deve estar vazio) digite NewView.

Após ter feito esta operação, arraste o componente label para esta nova view, e altere o texto dele para “Nova View”. Estamos fazendo isso, apenas para ter uma referência visual quando executarmos esta nova view.
Depois de criado, feche o IB, salve as modificações e retorne para o XCode.
Vamos tratar as views como componentes, até porque de fato são componentes, logo temos que declarar da mesma forma que declaramos o label e o botão anteriormente criados. Como criamos esta nova view dentro da MainView, iremos controlar o seu funcionamento dentro da MainViewController (da mesma forma que controlamos o label e o botão).
Declarando uma view no XCode
Vamos até o arquivo MainViewController.h e acrescente o seguinte código:
IBOutlet UIView *mainView;
IBOutlet UIView *newView;
e
@property (nonatomic, retain) UIView *mainView;
@property (nonatomic, retain) UIView *newView;
Você deve estar perguntando. Mas nós criamos somente uma view (newView), por que estamos declarando duas? A resposta é a seguinte, para manipular a newView, vamos precisar ter uma view de referência. A exibição ou não da newView, sempre terá como referência a mainView. O código na MainViewController.h, deverá ficar assim:
Da mesmo forma que fizemos para um label e para um botão, vamos inserir as seguintes linhas na MainViewController.m:
@synthesize mainView;
@synthesize newView;
O código na MainViewController.m ficará desta forma:
Compile o código para garantir que fizemos tudo certo.
Vamos voltar para o IB, dê um duplo click no arquivo MainView.xib.
Relacionando views entre o XCode e IB
Assim como fizemos com o label e o botão, precisamos informar para o IB que declaramos duas views, e precisamos criar o relacionamento entre as views do XCode e as views do IB.
Vamos fazer o mesmo procedimento, vamos dar um click pressionando o botão control em cima do controller File’s Owner. Isto fará com que uma janela pop-up seja aberta e possamos visualizar as views mainView e newView. Da mesma forma que relacionamos o label e o botão faremos o mesmo com as views, vamos até o circulo do lado direito da mainView, clicamos e arrastamos até a view chamada Main View. Vamos fazer o mesmo procedimento para newView, só que vamos arrastar para NewView.

Terminado o relacionamento, vamos aproveitar que já estamos no IB e vamos criar um botão na Main View e um botão na NewView. Arraste um componente UIButton para cada uma das views.
No botão criado na Main View, coloque o texto “Nova” e no botão da NewView, coloque o texto “Main”, conforme a figura abaixo:
Por que criamos estes dois botões? Porque será através deles que vamos trocar a exibição de views. Quando o usuário pressionar o botão Nova, a aplicação irá para a NewView e quando o usuário pressionar Main, a aplicação irá retornar para Main View. Claro que para isso vamos precisar declarar estes botões no XCode também e depois criar o relacionamento entre o XCode e IB.
Feche o IB e salve suas modificações.
Criando ações para manipular as Views
No arquivo MainViewController.h (sim, ainda estamos manipulando o MainView) insira as seguintes linhas:
IBOutlet UIButton *btnNew;
IBOutlet UIButton *btnMain;
@property (nonatomic, retain) UIButton *btnNew;
@property (nonatomic, retain) UIButton *btnMain;
-(IBAction)showNew:(id)sender;
-(IBAction)hideNew:(id)sender;
O código ficará desta forma:

Com este código, já estamos declarando os botões que vamos utilizar e também estamos montando as assinaturas dos métodos que vamos usar para fazer a troca de views. Na verdade, com o método showNew, iremos exibir a newView e com hideNew iremos ocultar newView. Quando ocultarmos newView a MainView ficará exposta mais uma vez. Ou seja, sempre teremos Main View exposta.
Agora vamos inserir as seguintes linhas na MainViewController.m:
@synthesize btnNew;
@synthesize btnMain;
- (IBAction)showNew:(id)sender {
[mainView addSubview:newView];
}
- (IBAction)hideNew:(id)sender {
[newView removeFromSuperview];
}
O código ficará da seguinte forma:
Vamos observar o código digitado no método showNew:
[mainView addSubView:newView];
Quando colocamos um comando entre colchetes, estamos encapsulando todas as ações que desejamos de uma única vez, neste caso temos somente a ação de addSubView em cima da mainView. Como o bom senso já deve ter percebido, estamos inserindo uma view (a newView) em cima da mainView. Esta ação fará com que newView sobreponha a mainView.
Agora vamos observar o código da hideNew:
[newView removeFromSuperview];
Neste momento nós vamos desfazer o comando anteriormente descrito, ou seja, vamos retirar a newView de cima da mainView, isto fará com que a mainView volte a ficar visível para o usuário.
Compile o projeto para se certificar que tudo foi digitado corretamente.
(by Ademar Varela)