เพิ่มปุ่มในแถบนำทางโดยใช้โปรแกรม


89

สวัสดีฉันต้องตั้งค่าปุ่มทางด้านขวาในแถบนำทางตามโปรแกรมดังนั้นถ้าฉันกดปุ่มฉันจะดำเนินการบางอย่าง ฉันได้สร้างแถบการนำทางโดยทางโปรแกรมโดย;

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];

ฉันลองวิธีเหล่านี้ทั้งหมดแล้ว แต่ไม่มีปุ่มใดที่แสดงปุ่มทางด้านขวามือ

คำตอบ:


187

ภายใน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 มาก แต่มันใช้งานได้ภายในรหัสของฉัน


ฉันต้องการเพิ่มโคลอนให้กับตัวเลือก - "action: @selector (flipView :)];
Rydell

22
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
}

SWIFT:

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
}

10

ในการเพิ่มปุ่มค้นหาบนแถบนำทางให้ใช้รหัสนี้:

 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.
}

ขอบคุณมากสำหรับการแก้ปัญหาของคุณ topItem คือสิ่งที่ฉันขาดหายไป
Kunal Gupta

6

วิธีเพิ่มปุ่มเพิ่มในแถบนำทางอย่างรวดเร็ว:

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

onAdd:

func onAdd(sender: AnyObject) {
}

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

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

//perform your action

}

5

เวอร์ชัน Swift เพิ่มสิ่งนี้ใน viewDidLoad:

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

และสิ่งนี้ในคลาส View Controller ของคุณ

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

4

ใช้รหัสต่อไปนี้:

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

3

ใช้ 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];
    }
}

มีความสุข...!!!


3

ในเมธอด ViewDidLoad ของ ViewController.m

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

[self.navigationItem setLeftBarButtonItem:cancel];

ตัวเลือก"(ด้านหลัง)"เป็นวิธีการที่จะยกเลิก ViewController ปัจจุบัน


3

ลองดูสิมันได้ผลสำหรับฉัน เพิ่มปุ่มในแถบนำทางโดยทางโปรแกรมนอกจากนี้เรายังตั้งค่าภาพเป็นปุ่มแถบนำทาง

ด้านล่างนี้คือรหัส: -

  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.
  }

1

หากคุณไม่ได้มองหา BarButtonItem แต่ปุ่มธรรมดาบน navigationBar โค้ดด้านล่างจะใช้งานได้:

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];

-1

สวัสดีทุกคน !! ฉันได้สร้างวิธีแก้ปัญหาในมือที่ต้องการการวางแนว UIInterface สองแบบโดยใช้ UIIMagePicker .. ใน ViewController ของฉันที่ฉันจัดการต่อกับ UIImagePickerController

** ฉันใช้ ..

-(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;
}

ขออภัยคำถามอะไร !! : P
Shad
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.