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