Как создать кнопку «Физическое меню» (например, в меню Android) в iPhone?

StackOverflow https://stackoverflow.com/questions/7304388

  •  25-10-2019
  •  | 
  •  

Вопрос

Я разрабатываю навигационное приложение в iPhone.

В котором я хочу создать кнопку «Физическое меню», как меню, например, в телефонах Android.

Меню можно получить из любого представления в иерархии.

У кого -нибудь есть идеи, как мы можем достичь этого.

Можем ли мы добавить ящик, подобный меню, в UinavigationBar?

Пожалуйста, не предлагайте TabBarController, так как это последний вариант.

Это было полезно?

Решение

Вы должны создать подкласс UIViewController, например MasterViewController. Анкет Иметь все подкласс контроллеров представления MasterViewController. Анкет в MasterViewController Вы можете написать код для создания и отображения своего представления ящика, а затем все контроллеры ваших представлений будут наследовать этот код и могут называть его на себя в любой момент.

Чтобы сдвинуть вид в:

drawerView.frame = CGRectMake(0, -1*drawerView.frame.size.height, self.view.frame.size.width, whateverHeight);
[UIView beginAnimations:nil context:NULL];
drawerView.frame = CGRectMake(0, 0, self.view.frame.size.width, whateverHeight);
[UIView commitAnimations];

Другие советы

Я думаю, что то, что вы хотите, это просто установить TeatherView of UinaVigationItem на произвольный Uiview для обработки пользовательских кранов.

Это не обязательно должен быть текстовый ярлык :)

Если это так, то я бы предложил вам взять sharedInstance С флагами отслеживает иерархию стека контроллера представления. Каждый раз, когда пользователь навигает, просто обновляйте свой sharedInstance и сделайте пользовательскую подготовку меню и заполняйте его. Хорошей практикой будет повторное использование вашего компонента пользовательского интерфейса, а не сделать его новым при каждой навигационной операции.

Вы можете создать "DrawerView"Класс и импортируйте его, где вы захотите его использовать. Тогда вы можете использовать presentModalViewController: myDrawer Чтобы это появилось, когда вам это нужно. Надеюсь, это имеет смысл.

Это очень просто ..

В одном XIB вы можете добавить много просмотров правильно. Теперь добавьте два основных представления, такие как Say Data View и вниз по боковой кнопке. Просмотр, в котором вы хотите. (Если Mnt приведите 4 кнопки для навигации) теперь держите у вас этот вид вверху. и вся другая гирархия представлений, которые вы можете добавить в этот представление данных.

Я думаю, вы должны создать синглтон UIViewController или же UIView для этого. Преимущество UIViewController это то, что он может быть представлен с presentModalViewController:animated: Метод, а также, если вам нужно, вы можете подтолкнуть его к своему навигационному стеку. Также преимущество, что у вас есть UIView экземпляр в то же время.
Используя шаблон Singleton, вы можете добраться до своего класса в любом месте.

Проверьте эту ссылку из официальной документации о Синглтоне в Objective-C: Создание экземпляра Синглтона
Или вы можете использовать макрос Мэтта Галлахера (потому что это очень удобно в использовании): Singleton Macro

Если вы можете получить бета -версию iOS 5, я очень рекомендую ее. Новый бета -выпуск Dev имеет расширение на UIViewController, называется Apple в качестве контроллеров представления контейнеров. Их очень легко настроить, и я использую его в своем приложении.

Контроллеры представления контейнера работают как UINavigationControllers а также UITabBarControllers в том, что они позволяют добавлять представление о ребенке контроллеры, не только детские взгляды. Как я уже сказал, их просто настроить. Я объясню, как:

  1. Создайте новый класс под названием ContainerController. Анкет Добавить метод инициализации под названием - (id)initWithNavigationController:(UINavigationController *)controller. Анкет Это реализация должна выглядеть примерно так:

    if ((self = [super init])) {
      [self addChildViewController:controller];
      controller.view.frame = CGRectMake(0, 0, 320, 420); // Leave room for the menu at bottom of the screen
      [self.view addSubview:controller.view];
    }
    

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

  2. в ContainerControllerS. viewDidLoad Метод, создайте меню:

    [super viewDidLoad];
    
    UIView *menuWrapperView = [[[UIView alloc] init] autorelease];
    menuWrapperView.frame = CGRectMake(0, 420, 320, 40); // Place a wrapper for the menu buttons directly below the navigation controller
    
    UIButton *button1 = ...;
    UIButton *button2 = ...;
    
    [menuWrapperView addSubview:button1];
    [menuWrapperView addSubview:button2];
    
    [self.view addSubview:menuWrapperView];
    

При таком подходе (с использованием контроллеров представления ребенка) ваши представления и контроллер навигации получат необходимое предупреждение о памяти, просмотр загрузки и вызовы метода обработки вращения при необходимости.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top