Modal UIViewController显示为空白

时间:2014-08-06 16:05:22

标签: ios objective-c uiviewcontroller presentmodalviewcontroller

我将代码附加到现有应用程序以添加模式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;
}

2 个答案:

答案 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并选择左上角的文件所有者选项

enter image description here

然后在右侧窗格中将文件所有者设置为视图控制器: enter image description here

<强> FOOTNOTE

顺便说一句,您不需要在viewDidLoad中设置视图控制器的框架。 ViewControllers不负责评估自己的规模。视图控制器仅负责维护模型和视图之间的关系。容器或父ViewController负责设置大小。

快乐编码