我将代码附加到现有应用程序以添加模式loginView,旧项目不使用xib,新视图控制器执行此操作。
当前项目以这种方式加载其rootViewController
- (void) loadView
{
// this should take up the entire screen...
UIView * view = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds];
view.backgroundColor = [UIColor blueColor];
self.view = view;
sideBar =
[[SideBarView alloc] init];
sideBar.rootViewController = self;
[self.view addSubview:sideBar];
pageView =
[[PageView alloc] initWithTitle:DataEntryTitle
client:client];
pageView.rootViewController = self;
//I added this to instantiate the new view controller
_aLoginView = [[LoginViewController alloc]initWithUser:aUser];
[self.view addSubview:pageView];
}
使用此代码启动模态视图控制器。
-(void)viewDidAppear:(BOOL)animated{
_aLoginView.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentViewController:_aLoginView animated:YES completion:nil];
}
只要我理解模态LoginView出现空白的原因是我创建了它的新实例,而不是调用现有的xib定义。有人知道我该怎么做来引用xib吗?旧项目不使用storyboard,也不使用xib文件。
谢谢,
根据您的信息,我认为我在LoginViewController.m中做错了什么,但我不确切知道是什么。
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (id)initWithUser:(verifyUser *)aUser
{
self = [super initWithNibName:@"LoginViewController" bundle:[NSBundle mainBundle]];
if (self) {
// Custom initialization
_UserModel = aUser;
}
return self;
}
答案 0 :(得分:0)
您想通过从笔尖
加载来创建视图控制器[[LoginViewController alloc] initWithNib:@"nib file name" bundle:[NSBundle mainBundle]]];
如果您想保留initWithUser:
初始化程序,则应该可以
self = [super initWithNib:@"nib file name" bundle:[NSBundle mainBundle]];
答案 1 :(得分:0)
未设置xib的文件所有者。
打开你的xib并选择左上角的文件所有者选项
然后在右侧窗格中将文件所有者设置为视图控制器:
<强> FOOTNOTE 强>
顺便说一句,您不需要在viewDidLoad中设置视图控制器的框架。 ViewControllers不负责评估自己的规模。视图控制器仅负责维护模型和视图之间的关系。容器或父ViewController负责设置大小。
快乐编码