प्रोग्रामेबल रूप से नेविगेशनबार में बटन जोड़ें


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 बहुत पसंद है, लेकिन यह मेरे कोड के भीतर काम कर रहा है।


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

स्विफ्ट:

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 वह चीज थी जो मुझे याद आ रही थी
कुणाल गुप्ता

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

स्विफ्ट संस्करण, इसे viewDidLoad में जोड़ें:

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

और यह आपके दृश्य नियंत्रक वर्ग में है

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

ViewCidroller.m की ViewDidLoad विधि में

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 की तलाश नहीं कर रहे हैं, लेकिन नेविगेशनबेर पर सरल बटन तो नीचे कोड काम करता है:

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 Class में मैं निम्नलिखित कार्य करता हूं।

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

सॉरी क्या सवाल था !! : पी
शाद
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.