Извините, для ясности, вы хотите, чтобы на вашем втором контроллере вида была кнопка, которая при касании добавляет ваш третий контроллер вида, занимающий половину экрана внизу?
Если это так, то вы можете сделать это с новыми контейнерами контроллера представления в iOS5.
Хорошо, у вас есть три контроллера вида. Ради этого предположим, что ваш класс называется FirstViewController, SecondViewController и ThirdViewController.
Из того, что вы говорите, я предполагаю, что у вас уже есть экземпляр FirstViewController с кнопкой, которая перемещает вас к экземпляру SecondViewController, и что проблема заключается в том, что SecondViewController добавляет экземпляр ThirdViewController в нижнюю половину экран при нажатии кнопки.
.m файл для SecondViewController должен сделать что-то вроде этого:
#import "ThirdViewController.h"
@interface SecondViewController ()
@property (retain) ThirdViewController *thirdViewConroller;
- (void)buttonTap;
@end
@implementation SecondViewController
@synthesize thirdViewConroller = _thirdViewConroller;
- (void)dealloc {
self.thirdViewConroller = nil;
[super dealloc];
}
- (void)loadView {
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.titleLabel.text = @"Show third controller";
[button addTarget:self action:@selector(buttonTap) forControlEvents:UIControlEventTouchUpInside];
button.frame = // Some CGRect of where you want the button to be
[self.view addSubview:button];
}
- (void)buttonTap {
// When the button is tapped, create an instance of your ThirdViewController and add it
self.thirdViewConroller = [[ThirdViewController alloc] initWithFrame:/* Some CGRect where you want the controller to be */ ];
[self.thirdViewConroller willMoveToParentViewController:self];
[self addChildViewController:self.thirdViewConroller];
[self.thirdViewConroller didMoveToParentViewController:self];
}
@end
Это должно дать вам кнопку на вашем втором контроллере, которая создаст и добавит вам третий контроллер. Убедитесь, что у нас есть все стандартные методы, которые у вас были раньше, это должно быть в дополнение к тому, что у вас есть.
В вашем интерфейсе для ThirdViewController:
@interface ThirdViewController : UIViewController <NSObject>
- (id)initWithFrame:(CGRect)frame;
@end
Тогда в реализации вашего ThirdViewController:
- (id)initWithFrame:(CGRect)frame {
self = [super initWithNibName:nil bundle:nil];
if (self) {
self.view.frame = frame;
// Do your init stuff here
}
return self;
}
Затем он должен обрабатывать добавление представлений и т. Д.
Убедитесь, что у вашего третьего класса ViewViewController есть допустимый метод initWithFrame: initialiser.
Это должно сработать, если вам нужна дополнительная помощь, дайте мне знать:)