4

我正在尝试使用情节提要实现 JASidePanels example2。 https://github.com/gotosleep/JASidePanels#example-2-storyboards

-(void)awakeFromNib
{
  [self setLeftPanel:[self.storyboard instantiateViewControllerWithIdentifier:@"leftViewController"]];
  [self setCenterPanel:[self.storyboard instantiateViewControllerWithIdentifier:@"centerViewController"]];
  [self setLeftPanel:[self.storyboard instantiateViewControllerWithIdentifier:@"rightViewController"]];
}

如果我将上面的代码添加到与示例 2 中的 MySidePanelController.m 相同的 CenterViewController.m 中,则应用程序崩溃如下。

https://dl.dropboxusercontent.com/u/6655378/stack1.png

-(void)awakeFromNib
{
//  [self setLeftPanel:[self.storyboard instantiateViewControllerWithIdentifier:@"leftViewController"]];
//  [self setCenterPanel:[self.storyboard instantiateViewControllerWithIdentifier:@"centerViewController"]];
//  [self setLeftPanel:[self.storyboard instantiateViewControllerWithIdentifier:@"rightViewController"]];
}

如果我像上面那样注释掉,该应用程序的工作方式如下。 ttps://dl.dropboxusercontent.com/u/6655378/stack2.png

我是 iOS 新手。你能告诉我有什么问题吗?

我的环境。

  • XCode:版本 4.6.2
  • iOS SDK:6.1
  • 模拟器:iPhone 6.1
4

1 回答 1

5

您通过调用-awakeFromNib中心视图控制器中的代码来导致堆栈溢出,因为它将另一个中心视图控制器设置为其中心面板,并以这种方式运行直到应用程序崩溃。

您需要有一个子类来JASidePanelController实现-awakeFromNib您设置为面板的其他 3 个视图控制器。

#import "JASidePanelController.h"

@interface MyPanelsController : JASidePanelController

@end


#import "MyPanelsController.h"

@implementation MyPanelsController

-(void)awakeFromNib
{
    [self setLeftPanel:[self.storyboard instantiateViewControllerWithIdentifier:@"leftViewController"]];
    [self setCenterPanel:[self.storyboard instantiateViewControllerWithIdentifier:@"centerViewController"]];
    [self setRightPanel:[self.storyboard instantiateViewControllerWithIdentifier:@"rightViewController"]];
}

@end

并在您的故事板中拖动 aUIViewController并将其类设置为并将其MyPanelsController设置为初始视图控制器。

于 2013-05-06T22:18:18.673 回答