这让我感到非常困惑,让我觉得我错过了一些必不可少的东西.但我正在尝试创建一个视图控制器容器来管理两个窗格(类似于SplitViewController,但有一些重要的区别).我几乎没有开始构建课程,所以我现在只有3个iVars:
@implementation SplitViewController{
BOOL _showLeftPane;
UIViewController *_leftController;
UIViewController *_rightController;
}
Run Code Online (Sandbox Code Playgroud)
无论我做什么,我都无法将视图控制器分配给_leftController iVar.大多数情况下,_rightController iVar可以分配.它变得怪异了.如果我切换iVars的顺序,所以_rightController出现在_leftController之前,我不能在第一次尝试时分配任何一个.但是,如果我再次尝试(字面上写两次赋值),_leftController将采取.一直以来,当我使用控制台在分配后立即请求iVar声明中列出的第一个控制器的值时,我得到的值是(UIViewController *) $5 = 0x00000001 [no Objective-C description available].WTF?
出于好奇(因为我可以...我几乎没有开始编写类)我将super从UIViewController更改为NSObject.当我这样做时,分配工作.实际上,除了在loadView上创建一个空白视图之外,赋值就是这个类现在所做的一切.
我错过了什么?
更新 代码的其余部分:
整个.h文件:
#import <UIKit/UIKit.h>
@interface SplitViewController : UIViewController
@property (strong) UIViewController *leftViewController;
@property (strong) UIViewController *rightViewController;
@end
Run Code Online (Sandbox Code Playgroud)
整个.m文件(注意,我尝试过合成属性,相同的行为,除了从控制台调试更难):
@implementation SplitViewController{
BOOL _showLeftPane;
UIViewController *_rightNavController;
UIViewController *_leftNavController;
}
#pragma mark - Init Methods
- (id)init{
if (self = [super initWithNibName:nil bundle:nil]){
_showLeftPane = YES;
}
return self;
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{
self = …Run Code Online (Sandbox Code Playgroud)