Как мне создать значительный подпросмотр - PullRequest
1 голос
/ 29 января 2012

Я хочу создать крупное подпредставление, которое можно перетаскивать следующим образом:

Если существует IBAction, который переносит вас к следующему представлению (SecondViewController), и когда это происходит, есть еще один IBAction там и когдащелкнув по нему, он создаст SubView, который составляет примерно половину размера текущего экрана, в котором вы находитесь (SecondViewController), который показывает третий контроллер представления, который будет создан?Кроме того, как бы вы сделали этот subView перетаскиваемым?Спасибо за помощь.

1 Ответ

1 голос
/ 29 января 2012

Извините, для ясности, вы хотите, чтобы на вашем втором контроллере вида была кнопка, которая при касании добавляет ваш третий контроллер вида, занимающий половину экрана внизу?

Если это так, то вы можете сделать это с новыми контейнерами контроллера представления в 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.

Это должно сработать, если вам нужна дополнительная помощь, дайте мне знать:)

...