尽管有相似数量的帖子,我仍然无法正常工作。 我有两个UIViewControllers,我在IB中设计了UILabels和imageviews等。 我想将这些添加到滚动视图中,以便可以在它们之间进行分页。
我已经定义了连接每个scrollViewcontrollers与它们在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未正确加载的任何想法?
答案 0 :(得分:2)
尝试这种方式:
NSUInteger scrollContentCount = 0;
for (NSUInteger arrayIndex = 0;
arrayIndex < [contents count];
arrayIndex++) {
// set scorllview properties
CGRect frame;
frame.origin.x = self.mScrollView.frame.size.width * arrayIndex;
frame.origin.y = 0;
frame.size = self.mScrollView.frame.size;
myScrollView.autoresizingMask = YES;
// alloc - init PODetailsView Controller
myController = [[MyController alloc] initWithNibName:@"MyController" bundle:[NSBundle mainBundle]];
[myController.view setFrame:frame];
// add view in scroll view
[self.myScrollView addSubview:myController.view];
scrollContentCount = scrollContentCount + 1;
}
// set scroll content size
self.myScrollView.contentSize =
CGSizeMake(self.myScrollView.frame.size.width * scrollContentCount,
self.myScrollView.frame.size.height);
}
不要释放for循环中的内容控制器对象。
根据您的要求设置 scrollView contentSize 。
希望这会对你有所帮助。
答案 1 :(得分:0)
有趣的是, - (void)loadView是问题所在。
由于视图是在界面构建器中生成的(使用框架设置),因此当loadView触发时,它正在创建一个新视图,吹走了在界面构建器中创建的视图。