簡體   English   中英

如何在iPhone中創建物理菜單按鈕(如Android中的菜單按鈕)?

[英]How to create physical menu button (like the one in Android) menu in iPhone?

我正在開發iPhone中基於導航的應用程序。

我想在其中創建類似於Android手機中的菜單之類的物理菜單按鈕。

可以從層次結構中的任何視圖訪問菜單。

任何人都不知道我們如何實現這一目標。

我們可以在UINavigationBar中添加類似菜單的抽屜嗎?

請不要建議tabbarcontroller,因為它是最后一個選項。

我認為您只需要將UINavigationItem的titleView設置為任意UIView即可處理用戶點擊。

這不必是文本標簽:)

如果是這種情況,那么我建議您采用帶有跟蹤視圖控制器堆棧層次結構的標志的sharedInstance 每次用戶導航時,只需更新您的sharedInstance並進行自定義菜單准備並填充它。 好的做法是重用您的UI組件,而不是在每次導航操作中都對其進行更新。

您應該做的是創建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];

您可以創建一個“ DrawerView ”類,並將其導入到要使用它的位置。 然后,您可以使用presentModalViewController: myDrawer使它在需要時顯示。 希望有道理。

非常簡單

在一個XIB中,您可以添加許多視圖。 現在添加兩個主要視圖,例如說數據視圖和您想要的向下按鈕視圖。(如果有4個按鈕需要導航)現在將您的視圖保持在頂部。 您可以在該數據視圖中添加所有其他視圖層次結構。

我認為您應該為此創建一個單例UIViewControllerUIView UIViewController優點是可以使用presentModalViewController:animated:方法來呈現它,並且如果需要,也可以將其推送到導航堆棧中。 同時擁有一個UIView實例的另一個優點是。
使用單例模式,您可以在任何地方上課。

檢查官方文檔中有關Objective-c中的單例的鏈接: 創建單例實例
或者您可以使用Matt Gallagher的宏(因為使用起來非常舒適): Singleton宏

如果您可以獲得iOS 5 Beta,我強烈推薦您。 新的beta開發版本在UIViewController上進行了擴展,被Apple稱為容器視圖控制器。 它們非常容易設置,我正在我的應用程序中使用一個。

容器視圖控制器的工作方式類似於UINavigationControllersUITabBarControllers ,它們使您可以添加子視圖控制器 ,而不僅僅是子視圖。 就像我說的那樣,它們很容易設置。 我將解釋如何:

  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. ContainerControllerviewDidLoad方法中,創建菜單:

     [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 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM