【问题标题】:IOS Switch view and storyboard not worksIOS切换视图和故事板不起作用
【发布时间】:2011-11-29 09:50:01
【问题描述】:

我在切换视图时遇到问题。我正在使用带有 xcode 4.2 的模拟器

故事板包含:

  • NavigationController(初始视图控制器)
  • UIViewController与导航控制器有关系
  • UIViewController(与我的自定义类配对:ViewEntryImageController)没有任何关系。包含一个按钮,一个带有一些工具栏按钮的底部工具栏。

用户进入UIViewController,在那里他可以看到ScrollView 和ScrollView 中的一些图像。

图片有手势:

    UITapGestureRecognizer *recognizer=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(openEntryImage)];
    [image addGestureRecognizer:recognizer];
    [recognizer release];

openEntryImage 函数:

(IBAction)openEntryImage
{
    ViewEntryImageController *controller=[[ViewEntryImageController alloc]initWithNibName:nil bundle:nil];
    controller.modalTransitionStyle=UIModalTransitionStyleCrossDissolve;
    [self presentModalViewController:controller animated:YES];
    [controller release];
}

当我尝试点击图像时,openEntryImage 也可以正常工作(效果是正确的),但我没有看到我的ViewEntryImageController 视图和我的按钮,我只看到一个黑色窗口。

我尝试在 ViewEntryImageController viewDidLoad 函数中加入 NSLog 行,它可以工作,那么黑色窗口是什么,我的视图控制器在哪里?

当我尝试使用pushViewController 时,在新视图中我发现了一个带有后退按钮的导航工具栏,但没有其他控件。

我尝试了另一个版本,我创建了一个 UIViewController 类,但现在使用了一个 xib 文件。我用它代替了ViewEntryImageController,它可以工作。为什么? 我也想在故事板中使用这个控制器。

【问题讨论】:

    标签: ios xcode uiviewcontroller storyboard nslog


    【解决方案1】:

    ViewEntryImageController 类本身没有关于如何构建对话框的信息。但是您可以从情节提要中自行实例化您的视图控制器:

    UIStoryboard *myStoryboard = [UIStoryboard storyboardWithName:@"StoryboardFileName" bundle:nil];
    ViewEntryImageController *controller = (ViewEntryImageController *)[myStoryboard instantiateViewControllerWithIdentifier:@"ViewEntryImage"];
    

    这假定故事板名称为 StoryboardFileName,并且视图条目图像控制器在视图属性(属性检查器,“视图控制器”部分)中设置了标识符 ViewEntryImage。

    【讨论】:

    • 如果它确实有效,接受答案或至少投票会很棒;-)(每个问题您只能接受一个答案)
    • 是的,我知道。您的回答很棒,但前一个更短,我喜欢短代码 :) 我尝试投票但我还不能,因为:“投票需要 15 名声望”,非常抱歉,再次感谢。当我得到这个时,我会回来投票:)
    • 哦,我明白了,那没问题:-)
    • +1 哇!这解决了我与这个问题的持久战! :) 谢谢!
    【解决方案2】:

    试试这样:

    ViewEntryImageController *controller=[[ViewEntryImageController alloc]initWithNibName:@"ViewEntryImageController" bundle:nil];
    

    如果您不使用 .nib 名称而是使用故事板,那就有点困难了。通过按住 ctrl 并从一个视图拖动到另一个视图,创建从控制器到 ViewEntryImageController 控制器的 segue。点击这个segue并给它一个标识符。

    然后使用[self performSegue:@"identifier"];函数呈现下一个视图。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-26
      • 2013-05-11
      • 1970-01-01
      • 2012-01-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多