【发布时间】:2011-03-31 10:47:22
【问题描述】:
我的应用程序纯粹以编程方式在 UINavigationController 上方的 UITabBarController 上构建,它们都在我的 AppDelegate 中声明。在我的导航控制器中,我展示了一个 UIViewController,一个自定义类。这个自定义类应该在 UIScrollView 和 UIPageControl 中显示自定义 UIView。
这是我的问题:
self.view 似乎在我调用它而不声明 self.view = [[UIView alloc ] init] (或类似的)。我想知道这是否是 -(void) loadView 的问题,但似乎它会在 -(void)viewDidLoad 中产生相同的错误。所以我基本上不得不使用 self.view = scrollView 来显示我的滚动视图,考虑到 [self.view addSubview:scrollView] 产生了错误。我的 UIPageControl 应该一直停留在页面上,实际上是视图的另一部分,而不是 UIScrollView。所以我尝试添加这样的容器视图
代码:
container = [[UIView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame];
scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0,0,0,0)];
scrollView.pagingEnabled = YES;
scrollView.showsVerticalScrollIndicator = NO;
scrollView.showsHorizontalScrollIndicator = NO;
// EDIT: ofcourse, I'm also resizing the frame with [scrollView setContentSize:] later, but this is farfetched code to add here.
[container addSubview:scrollView];
self.view = container;
不幸的是,我似乎根本没有得到任何结果,出现的只是一个空视图。但是,如果我添加一个 UILabel 或类似的,它会显示:
[container addSubview:[[UILabel alloc] initWithFrame:CGRectMake(50,50,50,50)]]; // entered above or beneath the addSubview:scrollView line.
我的问题是:为什么我的 scrollView 没有出现在 UIView 容器中?
我注意到一些教程说 scrollView 必须有一个委托,我同意这个逻辑 - 但是当我在我的 CustomUIViewController 类而不是我的AppDelegate。
【问题讨论】:
-
主要问题是 self.view = scrollView 和 [self.view addSubview:scrollView] 之间存在差异,我似乎无法弄清楚为什么
标签: uiview uiscrollview viewdidload addsubview loadview