[英]iOS5 storyboard UIPageViewController
我正在开发应用程序,并且正在使用iOS5故事板。 基本上,我拥有一个UITabBarController作为根控制器,其中包含一些UIViewController和UISplitViewController。 我想做的是使用UIPageViewController作为UISplitViewController的DetailController。 问题在于UIPageViewController不显示其视图控制器,但显示黑屏。 我要做的是在DetailController的viewDidLoad方法中初始化两个内容视图控制器,并为它们分配指令:
[self setViewControllers:self.pagesViewControllerArray direction:UIPageViewControllerNavigationOrientationHorizontal animated:NO completion:nil];
所以我不知道哪里出了错。
viewDidLoad方法如下:
- (void)viewDidLoad{
self.dataSource = self;
self.delegate = self;
self.page1ViewController = [[Page1ViewController alloc] initWithNibName:@"Page1ViewController" bundle:nil];
self.page2ViewController = [[Page2ViewController alloc] init];
self.pagesViewControllerArray = [NSArray arrayWithObjects:self.page1ViewController, self.page2ViewController, nil];
[self setViewControllers:self.pagesViewControllerArray direction:UIPageViewControllerNavigationOrientationHorizontal animated:NO completion:nil];
}
我试图同时使用一个与它的笔尖关联的viewcontroller和一个动态加载其视图的viewcontroller,但是它不起作用。
任何帮助将非常感激。 谢谢
首先,确保正在调用viewDidLoad。 实例初始化的方法有很多,我不确定何时使用每个选项。 如果使用initWithNibName,那么如果我没记错的话,不会调用viewDidLoad。 为了确保该方法被调用,您可以添加一个NSLog语句,例如...
NSLog(@"viewDidLoad: %@", NSStringFromClass([self class]));
如果正在调用它,它将显示在调试器控制台中。 您还可以添加initWithNibName方法以查看是否调用了该方法。
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
NSLog(@"initWithNibName: %@", NSStringFromClass([self class]));
}
return self;
}
我发现情节提要板无法按预期工作。 我开始使用的是容器视图。 他们没有什么幻想。 它们只是视觉元素,您可以将其放置在视图内部,然后将它们包装在标准UIViewController周围,然后设计图面将以与放置在另一个视图中的容器视图相同的尺寸显示相关视图。 然后,您可以在那里管理详细信息。 如果确实需要使用父视图控制器处理任何初始化,则将使用prepareForSegue方法。 您将需要为容器视图设置embed segue的名称(而不是通常看到的推送视图),并且在触发时,您可以访问destinationViewController,它只是容器视图内部的嵌入式视图控制器。 可能需要进行一些修补才能弄清楚。
另外,在管理器的“文档”选项卡中查找UIPageViewController。 左列底部列出了一个示例项目,您可能会发现它很有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.