加载另一个UIView时出现问题

时间:2013-01-11 16:00:42

标签: iphone ios cocoa-touch

在我的应用中,我实施了一个二维码阅读器,在扫描任何二维码后,将应用用户引导到应用中的另一个视图。

我有两个Xib。一个是打开名为demoViewController的应用程序时加载的主屏幕。另一个是应用程序在扫描QR码后将您带到的页面,称为yViewController。

在yViewController上,我使用名为sPage的UIView屏蔽了整个页面。我创建这个UIView的原因是因为我需要实现这个代码:

[[NSBundle mainBundle] loadNibNamed:@"yViewController" owner:self options:nil];
        [self.view addSubview:sPage];

这是扫描后将用户带到第二页的代码。我需要掩码UIView sPage才能使这个方法工作。它确实有效。

然而,我认为这搞砸了我的界面。我在我的sPage View中有一个UIImageView通过 demoViewConroller.m使用viewDidLoad:

[topImage setImage: [UIImage imageNamed:@"ylogoREAL.png"]]; 

图像未显示。

此外,我还有一些代码可以在键盘出现并隐藏文本字段时为我的视图设置动画。这也行不通。

我知道层次结构是正确的,因为我使用了一个适用于sPage View的buttonPressed方法,以及一个在触摸视图时关闭键盘的方法。但没有别的办法。

任何人都可以帮我找出原因吗?我很困惑:(

3 个答案:

答案 0 :(得分:1)

我对你想要达到的目标感到有点困惑,但我会试一试

如何初始化yViewController?我相信你应该使用

yViewController = [[UIViewController alloc] initWithNibName:@"yViewController" bundle:[NSBundle mainBundle]];

而不是创建加载yViewController的笔尖的掩码视图。

更新

查看代码后,我相信您希望在扫描完成后显示调查页面。你可以做两件事

选项1 - 更容易

使用现有的UIViewController(yViewController)向用户呈现UIView

NSArray *nibs = [[NSBundle mainBundle] loadNibNamed:@"Survey" owner:self options:nil];
UIView *view_to_show = [nibs objectAtIndex:0];
[self.view addSubview:view_to_show];

请记住,为了能够稍后解除此视图,您需要对它进行引用(将其声明为属性),稍后您可以执行[view_to_show setHidden:YES];或者removeFromSuperview

选项2 - UIViewController选项

使用您的调查视图创建一个新的UIViewController并显示

UIViewController *vc_new = [[UIViewController alloc] initWithNibName:@"Survey" bundle:[NSBundle mainBundle]];
[self presentViewController:vc_new animated:YES completion:nil];

答案 1 :(得分:1)

如果我正确地理解了你的错误你正在调用一个函数,然后用一个分号结束行(程序员的习惯)然后转到下一行(也许)用一个大括号打开函数。

-(void) function();
{

它不需要分号

-(void) function()
{

答案 2 :(得分:0)

我需要做的就是在[[NSBundle mainBundle] loadNibNamed:@“yViewController”owner:self options:nil]下声明topImage; 。我想ViewDidLoad在这种情况下放错了地方!