0

在我的应用程序中,我实现了一个 QR 码阅读器,它在扫描任何 QR 码后将应用程序用户引导到应用程序中的另一个视图。

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

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

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

那是在扫描后将用户带到第二页的代码。我需要掩码 UIView sPage 以使此方法起作用。它确实有效。

但是,我认为这搞砸了我的界面。我在我的 sPage 视图中有一个 UIImageView,通过 demoViewConroller.m 使用 viewDidLoad 实现:

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

图像不显示。

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

我知道层次结构是正确的,因为我使用了在 sPage 视图上工作的 buttonPressed 方法,以及在触摸视图时关闭键盘的方法。但没有其他工作。

谁能帮我弄清楚为什么?我很混乱 :(

4

3 回答 3

1

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

-(void) function();
{

它不需要有分号

-(void) function()
{
于 2013-01-11T16:35:48.683 回答
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];
于 2013-01-11T16:16:10.183 回答
0

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

于 2013-01-11T17:53:33.193 回答