【发布时间】:2014-03-30 06:26:27
【问题描述】:
我有一个 UIPageViewController,它显示两个 UIViewController 并允许用户在两者之间滑动。我实现了一个按钮,允许用户在两者之间手动切换。执行代码如下:
[self setViewControllers:@[[self.storyboard instantiateViewControllerWithIdentifier:@"PlayersViewController"]] direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:^(BOOL completion){}];
不幸的是,每次我按下按钮时,我都会收到一个异常提示:
* 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“* -[__NSPlaceholderArray initWithObjects:count:]: 尝试从 objects[0] 插入 nil 对象”
我从扩展 UIPageViewControllerDelegate 的自定义类中调用该方法。
任何帮助将不胜感激!
**编辑:
以下是我的自定义类的相关部分:
- (void)viewDidLoad
{
[super viewDidLoad];
self.dataSource = self;
gvc = [[GamesViewController alloc] init];
pvc = [[PlayersViewController alloc] init];
[self setViewControllers:@[[self.storyboard instantiateViewControllerWithIdentifier:@"GamesViewController"]] direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];
}
- (void) slidepage
{
[self setViewControllers:@[[self.storyboard instantiateViewControllerWithIdentifier:@"PlayersViewController"]] direction:UIPageViewControllerNavigationDirectionReverse animated:NO completion:^(BOOL completion){NSLog(@"hihi");}];
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
{
if ([viewController isKindOfClass:[GamesViewController class]])
return nil;
return [self.storyboard instantiateViewControllerWithIdentifier:@"GamesViewController"];
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
{
if ([viewController isKindOfClass:[PlayersViewController class]])
return nil;
return [self.storyboard instantiateViewControllerWithIdentifier:@"PlayersViewController"];
}
【问题讨论】:
-
您至少可以发布您的自定义类的代码吗?
-
storyboard属性是如何声明的? -
我的代码中没有明确声明。不是继承自 UIViewController 的属性吗?文档中的声明是@property(nonatomic, readonly, retain) UIStoryboard *storyboard
-
是的,你是对的。文档说如果视图控制器不是从情节提要中加载的,则该属性为零。那么接下来的问题是,如何实例化这个视图控制器?
-
[self.storyboard instantiateViewControllerWithIdentifier:@"PageViewController"];
标签: ios objective-c