J'ai donc un UIViewController (le contrôleur d'application principal est un TabBarController). Sur cela il y a un UINavigationBar, et un UIBarButtonItem. Je suis sûr que j'ai tout correctement branché dans l'Interface Builder et que la sortie dans le code est connecté au bouton dans le fichier .xib. Cela devrait être dû au fait que la méthode fonctionne correctement.Cacher le bouton sur le premier de deux UIViews, mais l'avoir visible sur le second
Maintenant, j'ai un autre bouton sur cette vue qui ouvre une deuxième vue, un UIWebView. Je veux que ce UIBarButtonItem, étiqueté "Back", fasse disparaître UIWebView, et ramène le premier UIView, ce qu'il fait correctement. Toutefois, lorsque vous êtes sur le premier UIView, il n'est pas nécessaire de voir le UIBarButtonItem, alors comment puis-je le cacher, mais ensuite l'afficher pour UIWebView. À propos, les deux vues utilisent le même UINavigationBar, l'UIWebView est affiché dans la barre d'onglets et la barre de navigation.
Voici mon code:
#import "WebViewController.h"
@implementation WebViewController
@synthesize webButton;
@synthesize item;
@synthesize infoView;
UIWebView *webView;
+ (UIColor*)myColor1 {
return [UIColor colorWithRed:0.0f/255.0f green:76.0f/255.0f blue:29.0f/255.0f alpha:1.0f];
}
// Creates Nav Bar with default Green at top of screen with given String as title
+ (UINavigationBar*)myNavBar1: (NSString*)input {
UIView *test = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0.0, 0.0, test.bounds.size.width, 45)];
navBar.tintColor = [WebViewController myColor1];
UINavigationItem *navItem;
navItem = [UINavigationItem alloc];
navItem.title = input;
[navBar pushNavigationItem:navItem animated:false];
return navBar;
}
- (IBAction) pushWebButton {
self.navigationItem.rightBarButtonItem = item;
CGRect webFrame = CGRectMake(0.0, 45.0, 320.0, 365.0);
webView = [[UIWebView alloc] initWithFrame:webFrame];
[webView setBackgroundColor:[UIColor whiteColor]];
NSString *urlAddress = @"http://www.independencenavigator.com";
NSURL *url = [NSURL URLWithString:urlAddress];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
webView.scalesPageToFit = YES;
[webView loadRequest:requestObj];
[self.view addSubview:webView];
[webView release];
}
- (void) pushBackButton {
[webView removeFromSuperview];
}
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad
{
self.navigationItem.rightBarButtonItem = nil;
[super viewDidLoad];
}
@end
Quelqu'un sait?
La chose étrange est, même si je mets le bouton de la barre à zéro élément comme ceci: self.navigationItem.rightBarButtonItem = nil ; Il apparaît toujours n'importe quoi. Je le mets même à zéro sur viewDidLoad, c'est comme si le constructeur de l'interface n'écoutait pas le code. – Scott
Je suppose que je n'ai jamais remarqué parce que je remplace le bouton de retour avec un autre bouton. Vous pouvez essayer ceci: self.navigationItem.hidesBackButton = YES; –
Encore ne fonctionne pas bien Je n'ai aucune idée à ce stade. Dans viewDidLoad, je self.navigationItem.leftBarButtonItem = nil; La méthode du bouton de retour contient le même code. J'essaye de générer le bouton par le code maintenant ainsi sur le bouton de Web clic je fais self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemCancel cible: action de soi: @selector (cancelButtonPressed)] autorelease]; – Scott