【发布时间】:2019-09-26 09:05:33
【问题描述】:
我需要在UIViewController里面做UIScrollView,每个UIViewController都有UITableview。
当我点击 UITableview 时,所有 UITableViewCells 都消失了。
如何在 UIScrollView 中初始化 UIViewController?
- (void)viewDidLoad {
[super viewDidLoad];
int width = 0;
for (int i = 0; i < [self.dishes count]; i++) {
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Order" bundle:nil];
OneDayDishViewController *myVC = (OneDayDishViewController *)[storyboard instantiateViewControllerWithIdentifier:@"OneDayDishViewController"];
myVC.dishes = self.dishes[i];
myVC.menuTitle = self.menuTitle;
[self.scrollView addSubview:myVC.view];
width += 375;
}
self.scrollView.contentSize = CGSizeMake(width,0);
}
在谷歌和堆栈溢出中查找后,我找到了this solution
所以我做了这样的事情
在我的 .h 文件中(我有 UIScrollView):
@property (strong, nonatomic) OneDayDishViewController *myVC;
比在我的 .m 文件中:
- (void)viewDidLoad {
[super viewDidLoad];
int width = 0;
for (int i = 0; i < [self.dishes count]; i++) {
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Order" bundle:nil];
self.myVC = [storyboard instantiateViewControllerWithIdentifier:@"OneDayDishViewController"];
self.myVC.dishes = self.dishes[i];
self.myVC.menuTitle = self.menuTitle;
[self.scrollView addSubview:self.myVC.view];
width += 375;
}
self.scrollView.contentSize = CGSizeMake(width,0);
}
现在我的滚动视图中也有 N 个元素,如果我点击最后一个元素 - 它工作正常,如果我点击任何其他元素 - 问题是一样的。
那么我做错了什么或者我如何动态地创建(强)正确的,这是一种好的做法吗?
谢谢
UPDT: 谢谢@CZ54 我的解决方案是添加 childviewcontroller 这样做
[self addChildViewController:myVC];
[self.scrollView addSubview:myVC.view];
[myVC didMoveToParentViewController:self];
而不是
[self.scrollView addSubview:myVC.view];
【问题讨论】:
标签: ios objective-c iphone xcode