gpt4 book ai didi

ios5 - UIScrollView 如何与 StoryBoard 一起工作并显示不同的 UIViewControllers?

转载 作者:行者123 更新时间:2023-12-04 23:03:02 26 4
gpt4 key购买 nike

我有一个 Storyboard。其中有一个 UIViewController - 在上面我已经放置了 UIScrollView 和 UIPageControl。在每个页面上(比如我有 3 个),我试图加载一个 UIViewController(显示不同的标签和表格值)。

问题 - 我可以加载所有内容,但标签和表格不可见。当我尝试更改每个页面的背景颜色时 - 它确实发生了变化。我研究了各种帖子和代码,但似乎没有任何效果/使用 StoryBoard 显示 UIScrollView(使用 UIViewController 显示标签和表格)。

我可以通过加载一个单独的 XIB 文件来做到这一点,但是整个 segue 被中断了。
请在下面查看我的代码。

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad
{
[super viewDidLoad];

//ScrollView and PageControl

// Create view controllers placeholder array
NSMutableArray *controllers = [[NSMutableArray alloc] init];
for (int i = 0; i < numberOfPages; i++)
{
[controllers addObject:[NSNull null]];
}
self.viewControllers = controllers;
// Set Scroll View
scrollView.pagingEnabled = YES;
scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * numberOfPages, scrollView.frame.size.height);
scrollView.showsHorizontalScrollIndicator = NO;
scrollView.showsVerticalScrollIndicator = NO;
scrollView.scrollsToTop = NO;
scrollView.delegate = self;
// Set Page Control
pageControl.numberOfPages = numberOfPages;
pageControl.currentPage = 0;
// Load the visible and next page
[self loadScrollViewWithPage:0];
[self loadScrollViewWithPage:1];
}

- (void)scrollViewDidScroll:(UIScrollView *)sender
{
if (pageControlUsed)
{
// To know if scroll is valid - from Page Control
return;
}

// Changes Page Control indicator
CGFloat pageWidth = scrollView.frame.size.width;
int page = floor((scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
pageControl.currentPage = page;

// Load the visible, previous and next pages
[self loadScrollViewWithPage:page - 1];
[self loadScrollViewWithPage:page];
[self loadScrollViewWithPage:page + 1];
}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
pageControlUsed = NO;
}

- (void)loadScrollViewWithPage:(int)page
{
if (page < 0) return;
if (page >= numberOfPages) return;

// Load new Controller
ReportsDetailViewController *controller = [viewControllers objectAtIndex:page];
if ((NSNull *)controller == [NSNull null])
{
controller = [[ReportsDetailViewController alloc] init];
controller.pageNumber = [NSNumber numberWithInt:page];
[viewControllers replaceObjectAtIndex:page withObject:controller];
}
if (nil == controller.view.superview)
{
CGRect frame = scrollView.frame;
frame.origin.x = frame.size.width * page;
frame.origin.y = 0;
controller.view.frame = frame;
[scrollView addSubview:controller.view];
}
}

最佳答案

尝试像这样创建您的 ViewControllers:

YourViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"YourViewController"];

您可以在属性检查器中设置 View Controller 的标识符。

我今天遇到了同样的问题,这对我有用。

关于ios5 - UIScrollView 如何与 StoryBoard 一起工作并显示不同的 UIViewControllers?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8961554/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com