2

我需要這樣一個屏幕:總是在頂部,有一個搜索欄Always。在下面,有一個導航控制器。這可能嗎?我曾嘗試在IB中調整導航控制器的大小,但無法重新調整它的大小。謝謝。這種視圖風格可能嗎?

回答

4

是的。但是,您必須在代碼中構建界面。你的主視圖控制器應該有兩個實例變量:第一個應該是一個搜索欄,第二個應該是一個導航控制器。然後,在-viewDidLoad中,將搜索欄和導航控制器的視圖添加爲主視圖控制器視圖的子視圖。其結果將是這樣的: enter image description here

你可以在這裏下載Xcode項目:http://www.mediafire.com/?36dswv4u0le447k

+0

蘋果應該允許嗎?對不起,我不認爲他們會.. – Krishnabhadra 2011-05-27 04:20:58

+1

@Krishnabhadra:看看AppShopper:http://itunes.apple.com/app/appshopper/id387037496?mt=8。他們的應用程序做同樣的事情,但他們沒有在導航控制器上方的搜索欄,他們把廣告視圖。 – EJV 2011-05-27 04:34:17

+1

好的..謝謝澄清..我刪除了我的答案和upvoted你.. – Krishnabhadra 2011-05-27 04:40:35

2

這不完全簡單,但是這是可能的。你需要做的是使根視圖控制器成爲一個普通的視圖控制器,包含一個UIView。該視圖包含搜索欄和「持有者視圖」。在您要將窗口添加控制器的視圖的地方,將其添加到持有者視圖。

The result

我創造了這個使用標準的導航控制器模板。我修改了應用程序的委託如下:

//header 
{ 
    UIWindow *window; 
    UINavigationController *navigationController; 
    UIViewController *rootVC; 
    UIView *holderView; 
} 
@property (nonatomic, retain) IBOutlet UIWindow *window; 
@property (nonatomic, retain) IBOutlet UINavigationController *navigationController; 
@property (nonatomic, retain) IBOutlet UIViewController *rootVC; 
@property (nonatomic, assign) IBOutlet UIView *holderView; 

//implementation 
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  
    UIView *temp; 
    temp = navigationController.view; 
    CGRect f = holderView.frame; 
    f.origin = CGPointZero; 
    temp.frame = f; 
    [holderView addSubview:temp]; 
    [window addSubview:rootVC.view]; 
    [window makeKeyAndVisible]; 
    return YES; 
} 

的IB層次的圖像: enter image description here

+2

聖牛!第一代iPhone! – 2011-05-27 05:21:47

+0

@Josh我很確定它至少是3G,如果不是3GS的話。 – ughoavgfhw 2011-05-27 05:24:53

+0

我以爲他們有一個平坦的前擋板......哦。 – 2011-05-27 05:30:53