将viewController视图添加到UIScrollView

时间:2012-02-12 04:30:21

标签: ios uiviewcontroller uiscrollview

尽管有相似数量的帖子,我仍然无法正常工作。 我有两个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未正确加载的任何想法?

2 个答案:

答案 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触发时,它正在创建一个新视图,吹走了在界面构建器中创建的视图。