2010-05-17 38 views
80

Xin chào, tôi cần đặt nút ở bên phải, trong thanh điều hướng, lập trình, để nếu tôi nhấn nút, tôi sẽ thực hiện một số thao tác. Tôi đã tạo thanh điều hướng, theo lập trình;Thêm nút vào thanh điều hướng theo chương trình

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

Tương tự, tôi cần thêm nút, ở bên phải thanh điều hướng này. Cho rằng tôi sử dụng,

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

Tôi đã thử tất cả các cách này, nhưng không có cách nào hiển thị nút ở phía bên tay phải.

Trả lời

173

Bên UIViewController lớp được thừa kế của tôi, tôi đang sử dụng sau bên viewDidLoad:

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

này thêm một nút để phía bên tay phải với Flip tiêu đề, trong đó kêu gọi phương pháp:

-(IBAction)flipView

Điều này trông rất giống bạn # 3, nhưng nó hoạt động trong mã của tôi.

+0

tôi cần phải thêm dấu hai chấm để chọn - "hành động: @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

nó không có vẻ để làm việc, bất kỳ manh mối về việc tại sao có thể là –

3

Sử dụng đoạn mã sau:

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

Simple sử dụng bản địa editBarButton như thế này

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

và sau đó

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

Hãy vui vẻ ... !!!

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

///// gọi là sự kiện

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

Hoàn hảo! Cảm ơn – TheMan

+0

wow, đó là một câu trả lời hay ... và cũng hoàn hảo .. –

3

Trong phương pháp viewDidLoad của ViewController.m

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

[self.navigationItem setLeftBarButtonItem:cancel]; 

"(trở lại)" chọn là một phương pháp để dissmiss Chế độ xem hiện tại của ViewController

-1

Xin chào mọi người !! Tôi tạo ra các giải pháp cho vấn đề ở bàn tay nơi Hai UIInterface định hướng được mong muốn bằng cách sử dụng UIIMagePicker .. Trong ViewController của tôi, nơi tôi xử lý segue để UIImagePickerController

** Tôi sử dụng một ..

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

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

} 

**

Sau đó, trong lớp appdelegate tôi làm như sau.

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

Xin lỗi câu hỏi là gì !! : P – Shad

+0

Vui lòng đọc Câu hỏi/Chủ đề cẩn thận dude ... !!!! – Tuhin

8

Để thêm nút tìm kiếm trên thanh điều hướng sử dụng mã này:

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

và thực hiện các phương pháp sau đây:

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

'topItem' là những gì làm cho nó làm việc cho tôi – JSmyth

+0

cảm ơn rất nhiều cho giải pháp của bạn. topItem là thứ mà tôi đã bỏ lỡ –

5

phiên bản Swift, thêm này trong viewDidLoad:

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

Và điều này trong bạn r View Controller lớp

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

Làm thế nào để thêm một nút add vào navbar trong nhanh chóng:

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

onAdd:

func onAdd(sender: AnyObject) { 
} 
2

Hãy thử this.It làm việc cho tôi. Thêm nút để thanh điều hướng lập trình, Ngoài ra chúng tôi thiết lập hình ảnh để nút thanh điều hướng,

Dưới đây là 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

Nếu bạn không tìm kiếm một BarButtonItem nhưng nút đơn giản trên Navigationbar sau đó bên dưới mã số hoạt động:

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]; 
Các vấn đề liên quan