【发布时间】:2012-02-12 04:30:20
【问题描述】:
尽管有很多类似的帖子,但我仍然无法正常工作。 我有两个 UIViewControllers,我在 IB 中设计了 UILabels 和 imageviews 等。 我想将这些添加到滚动视图中,以便在它们之间进行分页。
我定义了将每个scrollViewcontroller 与其在IB 中的元素连接起来的出口,但是,控制器本身是我在viewDidLoad 中的主视图控制器内以编程方式创建的。创建它们后,我从主视图控制器分配一些值,而不是将其作为子视图添加到 scrollViewController。但是什么都没有显示。从我所做的调试中,当我在分配值后设置断点时,我可以看到元素为零。它们应该从 xib 文件中加载,但似乎没有被读取。即使作为测试,我也尝试初始化其中一个元素(例如 UILabel)并将其设置为该子视图控制器,但它什么也不会显示。这里有一些代码可以更好地解释一下。
在主视图控制器中
detailControllerA *tempA = [[detailControllerA alloc] initWithNibName:@"detailOverviewA" bundle:nil];
self.overviewA = tempA;
[tempA release];
self.overviewA.someLabel.text = @"Some Text";
detailScrollView.contentSize = CGSizeMake(scrollWidth, scrollHeight);
detailScrollView.pagingEnabled = YES;
[detailScrollView addSubview:self.overviewA.view];
在 detailControllerA 实现中,我在 loadView 中设置了框架:
-(void)loadView {
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 90)];
self.view = view;
[view release];
}
我还在 detailControllerA.h 中使用 IBOutlets 定义了标签等,并在 xib 文件中实现了元素。
任何想法为什么 xib 在以编程方式创建时无法正确加载?
【问题讨论】:
-
我猜你需要在做任何事情之前调用 [super loadView]。即使您从 nib 加载,我确信 loadView 仍然是在控制器中创建视图所需的一些方法。
-
我现在想通了,有趣的是,-(void)loadView 是问题所在。由于视图是在界面构建器中生成的(使用框架设置),当 loadView 触发时,它正在创建一个新视图,将界面构建器中创建的视图吹走。
标签: ios uiviewcontroller uiscrollview