2010-05-17 6 views
80

Salut J'ai besoin de mettre le bouton sur le côté droit, dans la barre de navigation, par programmation, de sorte que si j'appuie sur le bouton, je vais effectuer quelques actions. J'ai créé la barre de navigation, par programmation;Ajouter un bouton à la barre de navigation par programme

navBar=[[UINavigationBar alloc]initWithFrame:CGRectMake(0,0,320,44) ]; 

De même, j'ai besoin d'ajouter le bouton, sur le côté droit de cette barre de navigation. Pour que je,

1.  

UIView* container = [[UIView alloc] init]; 

    // create a button and add it to the container 
    UIButton* button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 130, 44.01)]; 
    [container addSubview:button]; 
    [button release]; 

    // add another button 
    button = [[UIButton alloc] initWithFrame:CGRectMake(160, 0, 50, 44.01)]; 
    [container addSubview:button]; 
    [button release]; 

    // now create a Bar button item 
    UIBarButtonItem* item = [[UIBarButtonItem alloc] initWithCustomView:container]; 

    // set the nav bar's right button item 
    self.navigationItem.rightBarButtonItem = item; 
    [item release]; 

2.  

UIImage *im; 
    im=[UIImage imageNamed:@"back.png"]; 
    [button setImage:im forState:UIControlStateNormal]; 
    [im release]; 
    backButton = [[UIBarButtonItem alloc] initWithCustomView:button];  
    [backButton setImageInsets:UIEdgeInsetsMake(0, -10,5, 5)]; 
    [self.navigationItem setRightBarButtonItem:backButton]; 

3.  

UIBarButtonItem *refreshItem = [[UIBarButtonItem alloc] initWithTitle:@"button"    style:UIBarButtonItemStylePlain target:self action:@selector(refreshLogsAction:)]; 
    self.navigationItem.rightBarButtonItem = refreshItem; 

    [refreshItem release]; 

J'ai essayé toutes ces façons, mais aucune n'affiche le bouton sur le côté droit.

Répondre

173

intérieur de ma UIViewController classe dérivée, je me sers de ce qui suit à l'intérieur viewDidLoad:

UIBarButtonItem *flipButton = [[UIBarButtonItem alloc] 
           initWithTitle:@"Flip"            
           style:UIBarButtonItemStyleBordered 
           target:self 
           action:@selector(flipView:)]; 
self.navigationItem.rightBarButtonItem = flipButton; 
[flipButton release]; 

Cela ajoute un bouton à droite avec le Flip titre, qui appelle la méthode:

-(IBAction)flipView

Cela ressemble beaucoup à vous # 3, mais il fonctionne dans mon code.

+0

je besoin d'ajouter deux points au sélecteur - « l'action: @selector (flipView :)]; – Rydell

5
self.navigationItem.rightBarButtonItem=[[[UIBarButtonItem alloc]initWithTitle:@"Save" style:UIBarButtonItemStylePlain target:self action:@selector(saveAction:)]autorelease]; 

-(void)saveAction:(UIBarButtonItem *)sender{ 

//perform your action 

} 
+1

il ne semble pas travailler, pas la moindre idée sur les raisons qui pourraient être –

3

Utilisez le code suivant:

UIBarButtonItem *customBtn=[[UIBarButtonItem alloc] initWithTitle:@"Custom" style:UIBarButtonItemStylePlain target:self action:@selector(customBtnPressed)]; 
[self.navigationItem setRightBarButtonItem:customBtn]; 
2

utilisation simple editBarButton native comme celui-ci

self.navigationItem.rightBarButtonItem = self.editButtonItem; 
[self.navigationItem.rightBarButtonItem setAction:@selector(editBarBtnPressed)]; 

puis

- (void)editBarBtnPressed { 
    if ([infoTable isEditing]) { 
     [self.editButtonItem setTitle:@"Edit"]; 
     [infoTable setEditing:NO animated:YES]; 
    } 
    else { 
     [self.editButtonItem setTitle:@"Done"]; 
     [infoTable setEditing:YES animated:YES]; 
    } 
} 

Amusez-vous ... !!!

19
UIImage* image3 = [UIImage imageNamed:@"back_button.png"]; 
CGRect frameimg = CGRectMake(15,5, 25,25); 

UIButton *someButton = [[UIButton alloc] initWithFrame:frameimg]; 
[someButton setBackgroundImage:image3 forState:UIControlStateNormal]; 
[someButton addTarget:self action:@selector(Back_btn:) 
    forControlEvents:UIControlEventTouchUpInside]; 
[someButton setShowsTouchWhenHighlighted:YES]; 

UIBarButtonItem *mailbutton =[[UIBarButtonItem alloc] initWithCustomView:someButton]; 
self.navigationItem.leftBarButtonItem =mailbutton; 
[someButton release]; 

///// appelé événement

-(IBAction)Back_btn:(id)sender 
{ 
    //Your code here 
} 
+0

Parfait! Merci – TheMan

+0

wow, c'est une réponse cool ..et aussi parfait .. –

3

Dans le procédé de viewDidLoad ViewController.m

UIBarButtonItem *cancel = [[UIBarButtonItem alloc] initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(back)]; 

[self.navigationItem setLeftBarButtonItem:cancel]; 

"(retour)" sélecteur est une méthode pour dissmiss le ViewController actuel

-1

Bonjour à tous !! J'ai créé la solution au problème actuel où deux orientations UIInterface sont recherchées en utilisant le UIIMagePicker. Dans mon ViewController où je gère le segue au UIImagePickerController

** ..

-(void) editButtonPressed:(id)sender { 
    BOOL editPressed = YES; 
    NSUserDefaults *boolDefaults = [NSUserDefaults standardUserDefaults]; 
    [boolDefaults setBool:editPressed forKey:@"boolKey"]; 
    [boolDefaults synchronize]; 

    [self performSegueWithIdentifier:@"photoSegue" sender:nil]; 

} 

**

Puis, dans la classe AppDelegate je fais ce qui suit.

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window { 

    BOOL appDelBool; 
    NSUserDefaults *boolDefaults = [NSUserDefaults standardUserDefaults]; 
    appDelBool = [boolDefaults boolForKey:@"boolKey"]; 

     if (appDelBool == YES) 
      return (UIInterfaceOrientationMaskPortrait); 
     else 
      return UIInterfaceOrientationMaskLandscapeLeft; 
} 
+0

Désolé quelle était la question !! : P – Shad

+0

S'il vous plaît lire la Question/Sujet soigneusement mec ... !!!! – Tuhin

8

Pour ajouter le bouton de recherche dans la barre de navigation utiliser ce code:

UIBarButtonItem *searchButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSearch target:self action:@selector(toggleSearch:)]; 
self.navigationController.navigationBar.topItem.rightBarButtonItem = searchButton; 

et mettre en œuvre la méthode suivante:

- (IBAction)toggleSearch:(id)sender 
{ 
    // do something or handle Search Button Action. 
} 
+1

'topItem' est ce qui a fait que cela fonctionne pour moi – JSmyth

+0

merci beaucoup pour votre solution. topItem était la chose qui me manquait –

5

Version Swift, ajoutez dans viewDidLoad:

var doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Plain, target: self, action: "doneButton:") 
navigationItem.rightBarButtonItem = doneButton 

Et ceci en vous r View Controller classe

func doneButton(sender: UIBarButtonItem) { 
    println(111) 
} 
6

Comment ajouter un bouton Ajouter à la barre de navigation rapide dans:

self.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Add, target: self, action: "onAdd:") 

onAdd:

func onAdd(sender: AnyObject) { 
} 
2

Essayez this.It travail pour moi. bouton Ajouter à barre de navigation programmation, aussi nous avons mis l'image à bouton de la barre de navigation,

est ci-dessous le code: -

UIBarButtonItem *Savebtn=[[UIBarButtonItem alloc]initWithImage: 
    [[UIImage imageNamed:@"bt_save.png"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] 
    style:UIBarButtonItemStylePlain target:self action:@selector(SaveButtonClicked)]; 
    self.navigationItem.rightBarButtonItem=Savebtn; 

    -(void)SaveButtonClicked 
    { 
    // Add save button code. 
    } 
0

Si vous n'êtes pas à la recherche d'un BarButtonItem mais simple bouton sur navigationBar puis ci-dessous Code fonctionne:

UIButton *aButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[aButton setBackgroundImage:[UIImage imageNamed:@"NavBar.png"] forState:UIControlStateNormal]; 
[aButton addTarget:self 
      action:@selector(showButtonView:) 
    forControlEvents:UIControlEventTouchUpInside]; 
aButton.frame = CGRectMake(260.0, 10.0, 30.0, 30.0); 
[self.navigationController.navigationBar addSubview:aButton]; 
Questions connexes