我正在尝试使用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相同,则应用程序崩溃如下所示。
-(void)awakeFromNib
{
// [self setLeftPanel:[self.storyboard instantiateViewControllerWithIdentifier:@"leftViewController"]];
// [self setCenterPanel:[self.storyboard instantiateViewControllerWithIdentifier:@"centerViewController"]];
// [self setLeftPanel:[self.storyboard instantiateViewControllerWithIdentifier:@"rightViewController"]];
}
如果我像上面那样注释掉了,那么应用就像下面这样。
我是iOS新手。 你能告诉我出了什么问题吗?
我的环境。
答案 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
并将其设置为初始视图控制器。