Witam muszę ustawić przycisk po prawej stronie, na pasku nawigacyjnym, programowo, tak żebym jak wciśnie przycisk wykonał jakieś czynności. Pasek nawigacji utworzyłem programowo przez;
navBar=[[UINavigationBar alloc]initWithFrame:CGRectMake(0,0,320,44) ];
Podobnie muszę dodać przycisk po prawej stronie tego paska nawigacyjnego. Do tego użyłem
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];
Wypróbowałem wszystkie te sposoby, ale żaden nie wyświetla przycisku po prawej stronie.
objective-c
iphone
uinavigationbar
uibarbuttonitem
prochowiec
źródło
źródło
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];
///// nazwane zdarzeniem
-(IBAction)Back_btn:(id)sender { //Your code here }
SZYBKI:
var image3 = UIImage(named: "back_button.png") var frameimg = CGRect(x: 15, y: 5, width: 25, height: 25) var someButton = UIButton(frame: frameimg) someButton.setBackgroundImage(image3, for: .normal) someButton.addTarget(self, action: Selector("Back_btn:"), for: .touchUpInside) someButton.showsTouchWhenHighlighted = true var mailbutton = UIBarButtonItem(customView: someButton) navigationItem?.leftBarButtonItem = mailbutton func back_btn(_ sender: Any) { //Your code here }
źródło
Aby dodać przycisk wyszukiwania na pasku nawigacyjnym, użyj tego kodu:
UIBarButtonItem *searchButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSearch target:self action:@selector(toggleSearch:)]; self.navigationController.navigationBar.topItem.rightBarButtonItem = searchButton;
i zaimplementuj następującą metodę:
- (IBAction)toggleSearch:(id)sender { // do something or handle Search Button Action. }
źródło
Jak szybko dodać przycisk dodawania do paska nawigacyjnego:
self.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Add, target: self, action: "onAdd:")
onAdd:
źródło
self.navigationItem.rightBarButtonItem=[[[UIBarButtonItem alloc]initWithTitle:@"Save" style:UIBarButtonItemStylePlain target:self action:@selector(saveAction:)]autorelease]; -(void)saveAction:(UIBarButtonItem *)sender{ //perform your action }
źródło
Wersja Swift, dodaj to w widokuDidLoad:
var doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Plain, target: self, action: "doneButton:") navigationItem.rightBarButtonItem = doneButton
I to w Twojej klasie View Controller
func doneButton(sender: UIBarButtonItem) { println(111) }
źródło
Użyj następującego kodu:
UIBarButtonItem *customBtn=[[UIBarButtonItem alloc] initWithTitle:@"Custom" style:UIBarButtonItemStylePlain target:self action:@selector(customBtnPressed)]; [self.navigationItem setRightBarButtonItem:customBtn];
źródło
Proste użycie natywnego editBarButton w ten sposób
self.navigationItem.rightBarButtonItem = self.editButtonItem; [self.navigationItem.rightBarButtonItem setAction:@selector(editBarBtnPressed)];
i wtedy
- (void)editBarBtnPressed { if ([infoTable isEditing]) { [self.editButtonItem setTitle:@"Edit"]; [infoTable setEditing:NO animated:YES]; } else { [self.editButtonItem setTitle:@"Done"]; [infoTable setEditing:YES animated:YES]; } }
Baw się dobrze...!!!
źródło
W metodzie ViewDidLoad pliku ViewController.m
UIBarButtonItem *cancel = [[UIBarButtonItem alloc] initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(back)]; [self.navigationItem setLeftBarButtonItem:cancel];
Selektor „(wstecz)” to metoda usuwania bieżącego kontrolera ViewController
źródło
Spróbuj tego, to działa dla mnie. Dodaj przycisk do paska nawigacji programowo, również ustawiamy obraz na przycisk paska nawigacji,
Poniżej znajduje się kod: -
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. }
źródło
Jeśli nie szukasz BarButtonItem, ale prostego przycisku na navigationBar, poniższy kod działa:
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];
źródło
Cześć wszystkim !! Stworzyłem rozwiązanie problemu, w którym potrzebne są dwie orientacje interfejsu UIInterface za pomocą UIIMagePicker .. W moim ViewController, gdzie obsługuję przepływ do UIImagePickerController
** Używam ..
-(void) editButtonPressed:(id)sender { BOOL editPressed = YES; NSUserDefaults *boolDefaults = [NSUserDefaults standardUserDefaults]; [boolDefaults setBool:editPressed forKey:@"boolKey"]; [boolDefaults synchronize]; [self performSegueWithIdentifier:@"photoSegue" sender:nil]; }
**
Następnie w klasie AppDelegate wykonaj następujące czynności.
- (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; }
źródło