Меню доступно во всем приложении - Как мне это написать? - PullRequest
2 голосов
/ 20 сентября 2011

У меня есть приложение, которое представляет собой большую презентацию продукта компании.
У меня есть некоторые дополнительные функции, которые должны быть доступны в моем приложении.

Предполагаемая функциональность этой панели инструментов заключается в том, что она будет располагаться в виде небольшой тонкой вкладки в нижней части экрана. При нажатии на вкладку меню будет расширяться вверх (т. Е. Анимировать его свойство frame.y), позволяя вам нажимать любую из кнопок, содержащихся в меню.

Tab Hidden

Tab Visible

Трудность, с которой я столкнулся, состоит в том, что в настоящее время приложение охватывает несколько контроллеров представления, и, поскольку мне нужно, чтобы это было доступно повсеместно, в целях недопущения дублирования кода, было бы целесообразно также сделать этот ViewController, чтобы я просто загружал в другие мои контроллеры представления, но это, судя по всему, не рекомендуется Apple.

Как создать функциональность этого меню без дублирования кода? Я попробовал несколько вещей, но не могу отобразить меню в моем представлении.

Ниже я покажу, что у меня есть на данный момент.

Код, который будет установлен на любом контроллере вида:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.

    ToolboxMenu *toolboxMenu = [[ToolboxMenu alloc] init];
    [self.view addSubview:toolboxMenu.view];
}

Код, который создает панель инструментов:

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSLog(@"Creating View");
    self.view = [[UIView alloc] initWithFrame:CGRectMake(0,0,88,209)];
    self.view.backgroundColor = [UIColor clearColor];

    UIImageView *toolboxImage = [[UIImageView alloc] initWithImage:[[UIImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"popup_toolbox" ofType:@"jpg"]]];
    toolboxImage.frame = self.view.frame;
    [self.view addSubview:toolboxImage];

}

В приведенном выше коде NSLog срабатывает при инициализации меню, но я не вижу меню.

Ответы [ 2 ]

2 голосов
/ 20 сентября 2011

Вместо того, чтобы пытаться внедрить это в каждое представление, я бы рекомендовал создать отдельный UIWindow и поместить его поверх основного UIWindow. Вот как реализована клавиатура. Делая это таким образом, вы избежите каких-либо изменений в любом из существующих представлений. Вам нужно будет вручную управлять вращением устройства, но это не должно быть слишком сложным.

0 голосов
/ 20 сентября 2011

IIRC Apple TabViewController был разработан по-другому, потому что он обратен тому, что вы описали выше.TabViewController - это основной или главный ViewController, а родные братья - это ViewControlers дисплея.По сути, у вас есть один TabViewController, который будет переключаться между представлениями.

Я бы порекомендовал вам либо переделать иерархию представлений, либо расширить UIViewController классом, который управляет и отображает нижнее меню вкладок.Затем вы можете легко инициировать отдельный класс, который обрабатывает это в каждом из ваших представлений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...