Come aggiungere un pulsante della barra diritto ad una barra di navigazione in iPhone
-
27-10-2019 - |
Domanda
Voglio aggiungere un elemento pulsante della barra destra alla barra di navigazione, in modo che al clic, svolge la funzione di un certo.
Ho creato il seguente codice per aggiungere l'elemento pulsante della barra a destra, ma dopo che si è fatto, l'elemento pulsante della barra non è sempre visualizzata nella barra di navigazione:
-(void)viewDidload{
self.navigationItem.rightBarButtonItem =
[[[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemAdd
target:self
action:@selector(Add:)] autorelease];
}
-(IBAction)Add:(id)sender
{
TAddNewJourney *j=[[TAddNewJourney alloc]init];
[app.navigationController pushViewController:j animated:YES];
[j release];
}
Soluzione
-(void)viewDidLoad
{
[super viewDidLoad];
app.navigationController.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(Add:)] autorelease];
}
-(IBAction)Add:(id)sender
{
TAddNewJourney *j=[[TAddNewJourney alloc]init];
[app.navigationController pushViewController:j animated:YES];
[j release];
}
Provare le altre risposte. Ho postato questa risposta in modo che possa funzionare se l'viewcontroller non dispone di un controller di navigazione che credo sia il problema.
Altri suggerimenti
Let assumere, si dispone di un UIViewController, in questo modo:
UIViewController *vc = [UIViewController new];
E si è aggiunto al controller di navigazione:
UINavigationController *nc = [[UINavigationController alloc] initWithRootViewController:vc];
In questo modo rightBarButtonItem sarà non ottenere visualizzato :
nc.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"xyz" style:UIBarButtonItemStyleDone target:self action:@selector(xyz)];
ma in questo modo apparirà :
vc.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"xyz" style:UIBarButtonItemStyleDone target:self action:@selector(xyz)];
Utilizzare il proprio viewcontroller al posto del navigationController per riferirsi navigationItem.
Aggiungi questo codice in viewDidLoad
UIBarButtonItem *chkmanuaaly = [[UIBarButtonItem alloc]initWithTitle:@"Calculate" style:UIBarButtonItemStylePlain target:self action:@selector(nextview)];
self.navigationItem.rightBarButtonItem=chkmanuaaly;
[chkmanuaaly release];
La maggior parte delle risposte qui impostazione rightBarButtonItem del UINavigationBar dall'interno del nuovo VC dopo che è stato mostrato l'indirizzo. Il mio bisogno, che è stato effettivamente risposto da János, è quello di impostare le voci UINavigationItem dalla CALLING UIViewController. Quindi, i seguenti codice (Grazie, János).
// dall'interno di sé (aka il controllore chiamando):
UIViewController *c = [[[UIViewController alloc] init...] autorelease];
c.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(dismissModalViewControllerAnimated:)] autorelease];
c.navigationItem.title = @"Title Goes Here";
UINavigationController *nav = [[[UINavigationController alloc] initWithRootViewController:c] autorelease];
nav.navigationBarHidden = FALSE;
[self presentModalViewController:nav animated:YES];
Ora, scontato, questo può sembrare ridondante alla risposta János', ma ho bisogno di più punti rep al fine o segno la sua risposta su. ; -)
Credo che sarà la risposta più completa e dovrebbe aiutare in qualsiasi situazione:
-(void)viewDidLoad{
//Set Navigation Bar
UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 64)];
//Set title if needed
UINavigationItem * navTitle = [[UINavigationItem alloc] init];
navTitle.title = @"Title";
//Here you create info button and customize it
UIButton * tempButton = [UIButton buttonWithType:UIButtonTypeInfoLight];
//Add selector to info button
[tempButton addTarget:self action:@selector(infoButtonClicked) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem * infoButton = [[UIBarButtonItem alloc] initWithCustomView:tempButton];
//In this case your button will be on the right side
navTitle.rightBarButtonItem = infoButton;
//Add NavigationBar on main view
navBar.items = @[navTitle];
[self.view addSubview:navBar];
}
UIBarButtonItem *add=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addUser)];
self.navigationItem.rightBarButtonItem=add;
[add release];
Utilizza il seguente codice:
UIBarButtonItem *add=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addUser)];
self.navigationItem.rightBarButtonItem=add;
[add release];
Spero che questo ti aiuta.
Enjoy!
UIButton *dButton=[UIButton buttonWithType:0];
dButton.frame=CGRectMake(50,50,50,50);
[dButton addTarget:self action:@selector(clickdButton:)
forControlEvents:UIControlEventTouchUpInside];
[dButton setImage:[UIImage imageNamed:@"iconnavbar.png"]
forState:UIControlStateNormal];
dButton.adjustsImageWhenHighlighted=NO;
dButton.adjustsImageWhenDisabled=NO;
dButton.tag=0;
dButton.backgroundColor=[UIColor clearColor];
UIBarButtonItem *RightButton=[[[UIBarButtonItem alloc] initWithCustomView:dButton]autorelease];
self.navigationItem.rightBarButtonItem=RightButton;
e poi:
-(IBAction)clickdButton:(id)sender{
classexample *tempController=[[classexample alloc] init];
[self.navigationController pushViewController:tempController animated:YES];
[tempController autorelease];
}
Swift:
let rightButton = UIBarButtonItem(image: UIImage(named: "imageName"),
style: .plain,
target: self,
action: #selector(buttonTapped))
navigationItem.setRightBarButton(rightButton, animated: false)
func settingsButtonTapped() {
// Implement action
}