JASidePanels使用故事板的示例-2:崩溃

时间:2013-05-06 15:44:35

标签: ios objective-c open-source storyboard

我正在尝试使用storyboard实现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"]];
}

如果我将上面的代码添加到CenterViewController.m中,这与示例2中的MySidePanelController.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

1 个答案:

答案 0 :(得分: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

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