我的iPad App中有以下结构:
UINavigationController
(向顶栏提供UIBarButton
等)
我不确定我现在应该如何在Interfacebuilder中正确设置它。我的猜测是我创建了两个ViewControllers:
LoginVC1
:(这个也应该包含NavigationController,因为它是两个屏幕中的第一个)LoginVC2
:基于来自LoginVC1
的一些委托回调,我的应用程序将推送到此ViewController。这是我在IB中的LoginVC1
:
LoginVC1 http://k.minus.com/jpamEAFkBjpKT.png
当我以模态方式呈现它时,看起来这不是我想要的: Result http://k.minus.com/jHAYRnY788jFt.png
结果:
UINavigationController
的演示模式设置为FormSheet
,因为它全屏显示,所以也会被忽略。我做错了什么?
答案 0 :(得分:1)
Kjuly我只是使用presentModalViewController来显示对话框,但是 因为我的UINavigationControler包含一个UIViewController(参见 nib-screen),我会假设这个ViewController在显示的时候 显示模态。
并不总是贝西。将它添加到UINavigationController Hierarchy不会添加为rootViewController。这必须在这样的代码中完成:
UIViewController *rootViewController = [[[ExamplesViewController alloc] init] autorelease];
UINavigationController * navController = [[UINavigationController alloc] initWithRootViewController:rootViewController];
另外,检查您是否以模态方式呈现NavigationController,而不是ViewController。
要解决NavigationBar标题问题,请尝试在
中设置self.title
属性
-(void)viewDidload
方法,看看是否有效。如果没有,请尝试self.//instance of UINavigationController//.navigationBar.title = @"string"
。
至于其他没有出现的按钮,我的猜测是如果在代码中设置根控制器没有帮助,那么你只在.h中引用它们,而不是实例化它们。所以要么在.h:
中调用这样的东西//.h
@implementation ExampleViewController: UIViewController <UITextFieldDelegate> {
IBOutlet UIBarButtonItem * CancelButton;
IBOutlet UITextField * usernameField;
IBOutlet UITextField * passwordField;
IBOutlet UIButton * loginButton;
}
@property (nonatomic, retain) IBOutlet UIBarButtonItem * CancelButton;
@property (nonatomic, retain) IBOutlet UITextField * usernameField;
@property (nonatomic, retain) IBOutlet UITextField * passwordField;
@property (nonatomic, retain) IBOutlet UIButton * loginButton;
然后连接XIB中的插座,或者使用以下命令实例化.m中的按钮
//.m
-(void)viewDidLoad {
//do stuff
CancelButton = [[[UIBarButtonItem alloc]initWithTitle:@"Cancel" style:UIBarButtonItemStyleDone target:self action:@selector(dismissSelf)]autorelease];
//do more stuff
}