【发布时间】:2014-01-20 08:59:14
【问题描述】:
我认为这应该是一个简单的问题,但我只能摸不着头脑。我有一个在故事板中设置了多个 ViewController 的应用程序。我希望它们中的每一个在每个视图的顶部都有相同的导航栏,但是这个导航控制器在所有视图上都有相同的按钮。导航控制器是在 AppDelegate 中设置的,并且按钮被添加到每个 ViewController 的 ViewDidLoad 中(根据我在这里收到的另一个问题的答案),但目前,按钮(和标题)没有显示。
UINavigationController 的设置位置 - AppDelegate.m:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];
MainViewController* mainVC = [mainStoryboard instantiateInitialViewController];
UINavigationController *navVC = [[UINavigationController alloc] initWithRootViewController:mainVC];
[self.window setRootViewController:navVC];
[_window makeKeyAndVisible];
return YES;
}
其中一种观点:
- (void)viewDidLoad
{
[self setTitle:@"Congress app"]; // < This does not set the title of the NavController
UIBarButtonItem *showSettingsButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(showSettings:)];
UIBarButtonItem *showMenuButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"menuButton.png"] style:UIBarButtonItemStylePlain target:self action:@selector(revealMenu:)];
//self.navigationItem.leftBarButtonItem = showMenuButton;
//self.navigationItem.rightBarButtonItem = showSettingsButton;
self.navigationController.navigationItem.leftBarButtonItem = showMenuButton;
self.navigationController.navigationItem.rightBarButtonItem = showSettingsButton;
UINavigationController *currentNav;
UIViewController *VCname;
NSLog(@"First left button in navigation controller - %@", [self.navigationController.navigationItem.leftBarButtonItems objectAtIndex:0]);
NSLog(@"First right button in navigation controller - %@", [self.navigationController.navigationItem.rightBarButtonItems objectAtIndex:0]);
[super viewDidLoad];
}
我有几个 NSLogs 显示导航控制器中的内容(如果有的话),它显示:以及哪些暗示正在添加按钮但未显示?
编辑:
我刚刚记得在上面的代码中,有一个 ViewController (InitViewController.m) 在 VC 之前被触发。 NavigationController 分配在这里:
- (void)viewDidLoad
{
[super viewDidLoad];
self.topViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"MainVC"];
}
这很可能是问题的原因。
编辑 2:
感谢 Saurav Mac,我已将问题追踪到我试图在“错误”视图控制器上添加按钮。我在 AppDelegate.m 中设置了导航控制器,第一个视图控制器是 InitViewController,然后调用 MainViewController 作为“顶视图控制器”。不敢相信我错过了,感谢您的帮助。
【问题讨论】:
-
您是否删除了
Project Settings > #target# > Deployment Info > Main Interface上的“主要”[您的故事板名称](因为您正在手动管理初始控制器)? -
老兄让我们回到基础,您是否尝试过先添加一个普通的 barbuttonitem,而不是尝试添加一个按钮和图像?让我知道这是否有效:)
-
@Pavan - 我刚试过:[self.navigationItem setLeftBarButtonItem:[[UIBarButtonItem alloc] initWithTitle:@"Title" style:UIBarButtonItemStylePlain target:nil action:@selector(showSettings:)]animated :是的];仍然没有运气......
-
请查看此问题解决您的问题stackoverflow.com/a/26269894/4188824
标签: ios objective-c cocoa-touch