UIViewControllers 中带有许多 UITableVIew 的 UIScrollView 在点击时消失 UITableViewCell
Posted
技术标签:
【中文标题】UIViewControllers 中带有许多 UITableVIew 的 UIScrollView 在点击时消失 UITableViewCell【英文标题】:UIScrollView with many UITableVIew inside UIViewControllers disappear UITableViewCell's on tap 【发布时间】: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];
【问题讨论】:
【参考方案1】:添加子视图是不够的。
您必须使用添加整个控制器
addChildViewController:
(来自https://developer.apple.com/documentation/uikit/uiviewcontroller/1621394-addchildviewcontroller)
而且你必须保留你添加的每个实例。
改变
@property (strong, nonatomic) OneDayDishViewController *myVC;
进入
@property (strong, nonatomic) NSMutableArray<OneDayDishViewController*> *myVC;
【讨论】:
@property (strong, nonatomic) Array[self.scrollView addSubview:myVC.view];
以上是关于UIViewControllers 中带有许多 UITableVIew 的 UIScrollView 在点击时消失 UITableViewCell的主要内容,如果未能解决你的问题,请参考以下文章
在 pandas 数据框中转换具有许多工作表(在 shett 名称中带有空格)的 excel 文件