无法将UIScrollView添加到UINavigationBar

时间:2013-08-30 11:35:11

标签: ios uiscrollview uinavigationbar titleview

我希望将scrollview添加为UINavigationBar's titleview,但奇怪的是我无法这样做。

在viewDidLoad中:

navController = [[UINavigationController alloc] init];
    self.view.frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height - 20 - 45 - 2);
    CGRect frame = navController.view.frame;
    frame.size.height -= 20;
    [self.view addSubview:navController.view];

    UIScrollView *someview = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 44)];
    someview.backgroundColor = [UIColor orangeColor];
    navController.navigationItem.titleView = someview;

这是一段非常简单的代码,但我无法弄清楚我错过了什么。请有人帮助我...谢谢。

旁注:我在没有任何根控制器的情况下发起UINavigationController,因为我首先关注的是将滚动视图添加到导航栏。

2 个答案:

答案 0 :(得分:0)

您是否尝试将滚动视图添加到容器视图中。像这样:

navController = [[UINavigationController alloc] init];
self.view.frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height - 20 - 45 - 2);
CGRect frame = navController.view.frame;
frame.size.height -= 20;
[self.view addSubview:navController.view];

UIView *container = [[UIView alloc] initWithFrame:CGRectMake(...)];
UIScrollView *someview = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 44)];
someview.backgroundColor = [UIColor orangeColor];
[container addSubview:someview];
navController.navigationItem.titleView = container;

答案 1 :(得分:0)

navController.navigationItem实际上从未添加到导航栏。它的存在是因为nav控制器是UIViewController的子类。但它没有被使用。

将根视图控制器添加到导航控制器,并将滚动视图添加为navigationItem titleView

根据您所追求的内容,您可能还希望将导航控制器子类化为在推送任何新视图控制器时注入自定义titleView