0

在我的应用程序的一部分中,单击按钮会创建一个新页面。但是,我希望该页面与我之前所在的页面完全相同,但只是它的一个新实例。在询问了在 SO 上执行此操作的最佳方法后,我了解到启用分页的 UIScrollView 是最好的方法。所以,我写了一些代码来尝试做我正在尝试的事情。但是,当我按下按钮时,应用程序就会崩溃。我假设它进入了某种递归(一次又一次地调用自己)。任何对可能错误的见解都会很棒。我可以确认所有插座都连接到它们在 StoryBoard 中的各自位置。

-(IBAction)createContainer:(id)sender {


    [allScrollViews addObject:self.containerView];
    for (int i = 0; i < allScrollViews.count; i++) {
        CGRect frame;
        frame.origin.x = self.containerView.frame.size.width * i;
        frame.origin.y = 0;
        frame.size = self.containerView.frame.size;

        UIView *subview = self.view;
        subview.backgroundColor = self.view.backgroundColor;
        [self.containerView addSubview:subview];

    }

    self.containerView.contentSize = CGSizeMake(self.containerView.frame.size.width * allScrollViews.count, self.containerView.frame.size.height);   

}

再一次,按下按钮必须几乎复制我所在的视图(ViewController.m),并在新页面上创建它的新实例。我的代码有望接近我想要完成的目标。

非常感谢!~地毯嘶嘶声

编辑:如果有帮助,应用程序崩溃时会突出显示:

0x2281b61:  calll  0x2281b66       CA::Layer::ensure_transaction_recursively(CA::Transaction*) + 14
4

1 回答 1

0

我认为你应该这样做:

-(IBAction)createContainer:(id)sender {
    [allScrollViews addObject:self.containerView];
    for (int i = 0; i < allScrollViews.count; i++) {
        CGRect frame = self.containerView.frame;
        frame.origin.x = self.containerView.frame.size.width * i;
        frame.origin.y = 0;
        self.containerView.frame = frame;

        [self.scrollView addSubview: self.containerView];
    }

    self.scrollView.contentSize = CGSizeMake(self.containerView.frame.size.width * allScrollViews.count, self.containerView.frame.size.height);   

}
于 2013-05-24T04:50:05.190 回答