0



我正在使用 Xcode 在 iOS 中编写一个简单的应用程序,我正在尝试将另一个ViewController作为模态加载。我加载模式的来源HomeScreenViewController(继承自)源自项目的情节提要。 然后,作为对按钮按下事件的响应,我正在加载这个模式,如下所示:UIViewController

-(IBAction)onAddButtonPressed:(UIButton *)sender {
    MyAnotherViewController *vc = [[MyAnotherViewController alloc] init];
    [self presentViewController:vc animated:YES completion:nil];
}

该类MyAnotherViewController在 Storyborad 中没有表示,因为它是一个显示导航栏和文本字段的简单类。代码为(部分代码,其余为Xcode自动生成的方法):

@implementation MyAnotherViewController 

- (void)viewDidLoad {
    [self.navigationItem setTitle:@"Example"];
    [self.view addSubview:[[UITextView alloc]initWithFrame:self.view.bounds]];
}
@end

问题是(也可以在附图中看到)由于navigationItem某种原因没有显示。
我还确认self.navigationItem不是nil,也不是。更重要的是,我可以在调试模式下看到标题实际上设置为“示例”。

从截图中可以看出,UITextView 捕获了整个屏幕

非常感谢您的帮助,
干杯...

4

2 回答 2

2

UIViewController的UINavigationItem属性仅在 ViewController 位于 a 内时使用UINavigationController,因此:

-(IBAction)onAddButtonPressed:(UIButton *)sender {
    MyAnotherViewController *vc = [[MyAnotherViewController alloc] init];
    UINavigationController *navCtl = [[UINavigationController alloc] initWithRootController:vc];
    [self presentViewController:navCtl animated:YES completion:nil];
}
于 2013-08-02T15:12:19.727 回答
0

如果您MyAnotherViewController不是 的子类UINavigationController,或者您没有手动添加UINavigationItemUIViewController则无法显示导航项。也许你可以尝试MyAnotherViewControllerUINavigationController.

// Assume you have adopted ARC
-(IBAction)onAddButtonPressed:(UIButton *)sender {
    MyAnotherViewController *vc = [[MyAnotherViewController alloc] init];
    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc];
    [self presentViewController:nav animated:YES completion:nil];
}

在你-viewDidLoad的 of 中MyAnotherViewController,你只需要这样做:

-(void)viewDidLoad {
    self.title = @"Example";
    /*
     * Your other code
     */
}
于 2013-08-02T16:22:10.737 回答