Aga*_*non 1 cocoa-touch objective-c ios
我认为这应该是一个简单的,但我只是在挠头.我有一个应用程序,在故事板中设置了多个ViewControllers.我希望每个视图的每个视图顶部都有相同的导航栏,但是这个导航控制器在所有视图上都有相同的按钮.导航控制器在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;
}
Run Code Online (Sandbox Code Playgroud)
其中一个观点:
- (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];
}
Run Code Online (Sandbox Code Playgroud)
我有几个NSLog显示导航控制器中有什么(如果有的话),它显示:以及哪些按钮被添加但未显示?
编辑:
我记得在上面的代码中有一个在VC之前触发的ViewController(InitViewController.m).NavigationController在这里分配:
- (void)viewDidLoad
{
[super viewDidLoad];
self.topViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"MainVC"];
}
Run Code Online (Sandbox Code Playgroud)
这很可能是问题的原因.
编辑2:
感谢Saurav Mac,我已经跟踪了问题,试图在"错误"的视图控制器上添加按钮.我在AppDelegate.m中安装了导航控制器,第一个视图控制器是InitViewController,然后调用MainViewController作为'顶视图控制器'.不敢相信我错过了,谢谢你的帮助.
小智 6
您可以在公共类(即NSObject的子类)中创建此按钮,然后可以在要添加按钮的每个类中调用此方法,也可以将此代码添加到每个类的ViewDidLoad方法中 -
self.navigationItem.leftBarButtonItem=[[UIBarButtonItem alloc]init];
UIImage *img1=[UIImage imageNamed:@"image.png"];
CGRect frameimg1 = CGRectMake(0, 0, img1.size.width, img1.size.height);
UIButton *signOut=[[UIButton alloc]initWithFrame:frameimg1];
[signOut setBackgroundImage:img1 forState:UIControlStateNormal];
[signOut addTarget:self action:@selector(BackButtonPressed)
forControlEvents:UIControlEventTouchUpInside];
[signOut setShowsTouchWhenHighlighted:YES];
UIBarButtonItem *barButton=[[UIBarButtonItem alloc]initWithCustomView:signOut];
self.navigationItem.leftBarButtonItem=barButton;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13891 次 |
| 最近记录: |