我正在尝试创建一个内部有多个水平分页UITableViews的PageViewController。 UITableViews存储在一个数组中;我使用UIPageViewController setViewControllers
方法将数组中的第一个对象添加到PageVC:
[self.pageViewController setViewControllers:[self.tableViews objectAtIndex:0] direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];
然后我使用viewControllerBeforeViewController
和viewControllerAfterViewController
方法将剩余的UITableViews添加到PageViewController。
但setViewControllers
方法产生以下错误:
-[UITableView count]: unrecognized selector sent to instance 0x7c347e00
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITableView count]: unrecognized selector sent to instance 0x7c347e00'
为什么会发生这种错误?
答案 0 :(得分:3)
您应首先查看使用here的方法:
- (void)setViewControllers:(NSArray<UIViewController *> *)viewControllers
direction:(UIPageViewControllerNavigationDirection)direction
animated:(BOOL)animated
completion:(void (^)(BOOL finished))completion;
它说参数应该是viewControllers
<强>参数:强>
viewControllers视图控制器或视图控制器 显示。
因此,您必须选择UIViewcontroller
或UITableViewController
。
答案 1 :(得分:1)
两个问题。
您需要将视图控制器而不是视图传递给页面视图控制器。对于每个UITableView,您需要一个UITableViewController。
如果您将变量self.tableViews
更改为self.tableViewControllers
(使用您为每个UITableView创建的UITableViewController),那么就在那里。
另一个问题是setViewControllers
的第一个参数应该是NSArray。 (NSArray有一个名为count
的选择器。)
更改代码以在添加时将第一个表视图包装在数组中:
[self.pageViewController setViewControllers:@[ [self.tableViewControllers objectAtIndex:0] ] direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil]