Добавить кнопку на панель навигации программно
Привет мне нужно установить кнопку на правой стороне, в навигационной панели, программно, так что если я нажму кнопку, я буду выполнять некоторые действия. Я создал панель навигации, программно;
navBar=[[UINavigationBar alloc]initWithFrame:CGRectMake(0,0,320,44) ];
Аналогичным образом, мне нужно добавить кнопку в правой части этой панели навигации. Для этого я использовал,
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];
Я пробовал все эти способы, но ни один не отображает кнопку на экране. правая сторона.
12 ответов:
Внутри моего
UIViewController
производного класса я использую следующее внутриviewDidLoad
:UIBarButtonItem *flipButton = [[UIBarButtonItem alloc] initWithTitle:@"Flip" style:UIBarButtonItemStyleBordered target:self action:@selector(flipView:)]; self.navigationItem.rightBarButtonItem = flipButton; [flipButton release];
Это добавляет кнопку с правой стороны с заголовком Flip, который вызывает метод:
-(IBAction)flipView
Это очень похоже на вас #3, но работает в моем коде.
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];
///// вызванное событие
-(IBAction)Back_btn:(id)sender { //Your code here }
Свифт:
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 }
Чтобы добавить кнопку поиска на панели навигации, используйте следующий код:
UIBarButtonItem *searchButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSearch target:self action:@selector(toggleSearch:)]; self.navigationController.navigationBar.topItem.rightBarButtonItem = searchButton;
И реализовать следующий метод:
- (IBAction)toggleSearch:(id)sender { // do something or handle Search Button Action. }
Как добавить кнопку Добавить в навигационную панель в swift:
self.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Add, target: self, action: "onAdd:")
OnAdd:
func onAdd(sender: AnyObject) { }
Swift версия, добавьте это в viewDidLoad:
var doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Plain, target: self, action: "doneButton:") navigationItem.rightBarButtonItem = doneButton
И это в вашем представлении контроллер класса
func doneButton(sender: UIBarButtonItem) { println(111) }
self.navigationItem.rightBarButtonItem=[[[UIBarButtonItem alloc]initWithTitle:@"Save" style:UIBarButtonItemStylePlain target:self action:@selector(saveAction:)]autorelease]; -(void)saveAction:(UIBarButtonItem *)sender{ //perform your action }
В методе ViewDidLoad ViewController.m
UIBarButtonItem *cancel = [[UIBarButtonItem alloc] initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(back)]; [self.navigationItem setLeftBarButtonItem:cancel];
"(назад) " селектор-это метод для дисмисса текущего ViewController
Используйте следующий код:
UIBarButtonItem *customBtn=[[UIBarButtonItem alloc] initWithTitle:@"Custom" style:UIBarButtonItemStylePlain target:self action:@selector(customBtnPressed)]; [self.navigationItem setRightBarButtonItem:customBtn];
Простое использование native editBarButton, как это
self.navigationItem.rightBarButtonItem = self.editButtonItem; [self.navigationItem.rightBarButtonItem setAction:@selector(editBarBtnPressed)];
И затем
- (void)editBarBtnPressed { if ([infoTable isEditing]) { [self.editButtonItem setTitle:@"Edit"]; [infoTable setEditing:NO animated:YES]; } else { [self.editButtonItem setTitle:@"Done"]; [infoTable setEditing:YES animated:YES]; } }
Веселитесь...!!!
Попробуйте this.It работай на меня. Добавить кнопку в панель навигации программно, также мы устанавливаем изображение на кнопку панели навигации,
Ниже приведен код: -
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. }
Если вы ищете не BarButtonItem, а простую кнопку на панели навигации, то ниже код работает:
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];
Всем привет !! Я создал решение для рассматриваемой проблемы, где требуется две ориентации UIInterface, используя UIIMagePicker.. В моем ViewController, где я обрабатываю сегмент к UIImagePickerController
* * я использую a..
-(void) editButtonPressed:(id)sender { BOOL editPressed = YES; NSUserDefaults *boolDefaults = [NSUserDefaults standardUserDefaults]; [boolDefaults setBool:editPressed forKey:@"boolKey"]; [boolDefaults synchronize]; [self performSegueWithIdentifier:@"photoSegue" sender:nil]; }
**
Затем в классе AppDelegate я делаю следующее.
- (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; }