这种视图样式可能吗?

时间:2011-05-27 03:35:36

标签: objective-c cocoa-touch ios uiviewcontroller uinavigationcontroller

我需要一个这样的屏幕:总是在顶部,有一个搜索栏,总是。在下面,有一个导航控制器。这可能吗?我已经尝试在IB中调整导航控制器的大小,但我无法重新调整它的大小。感谢。

2 个答案:

答案 0 :(得分:4)

是。但是,您必须在代码中构造接口。您的主视图控制器应该有两个实例变量:第一个应该是搜索栏,第二个应该是导航控制器。然后,在-viewDidLoad中,将搜索栏和导航控制器的视图作为子视图添加到主视图控制器的视图中。结果将如下所示: enter image description here

您可以在此处下载Xcode项目:http://www.mediafire.com/?36dswv4u0le447k

答案 1 :(得分:2)

这不是很简单,但这是可能的。您需要做的是使根视图控制器成为包含UIView的普通视图控制器。该视图包含搜索栏和“持有者视图”。在您将nagivigation控制器的视图添加到窗口的位置,您可以将其添加到持有者视图中。

The result

我使用标准导航控制器模板创建了这个。我按如下方式修改了app委托:

//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