切换视图时遇到问题。我正在使用带有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
视图和我的按钮,我只看到一个黑色的窗户。
我尝试将 NSLog 行放入ViewEntryImageController
viewDidLoad
函数,它可以工作,那么什么是黑色窗口以及我的视图控制器在哪里?
当我尝试使用pushViewController
时,在新视图中我找到了一个带有后退按钮的导航工具栏,但没有其他控件。
我尝试了另一个版本,我创建了一个UIViewController
类,但现在有一个 xib 文件。我使用它代替ViewEntryImageController
并且它有效。为什么?
我也想在故事板中使用这个控制器。
答案 0 :(得分:4)
ViewEntryImageController
类本身没有关于如何构建对话框的信息。但您可以从故事板中自行实例化视图控制器:
UIStoryboard *myStoryboard = [UIStoryboard storyboardWithName:@"StoryboardFileName" bundle:nil];
ViewEntryImageController *controller = (ViewEntryImageController *)[myStoryboard instantiateViewControllerWithIdentifier:@"ViewEntryImage"];
这假定故事板名称为StoryboardFileName
,并且视图条目图像控制器在视图属性中设置了ViewEntryImage
标识符(属性检查器,部分"视图控制器")
答案 1 :(得分:1)
试试这样:
ViewEntryImageController *controller=[[ViewEntryImageController alloc]initWithNibName:@"ViewEntryImageController" bundle:nil];
如果你不使用.nib名称而是使用故事板,那就更难了。通过按住Ctrl并从一个视图拖动到另一个视图,从控制器到ViewEntryImageController控制器创建一个segue。单击此segue并为其指定标识符。
然后使用[self performSegue:@"identifier"];
函数显示下一个视图。