добавить Uibutton в заголовок панели навигации контроллера iphone - PullRequest
2 голосов
/ 17 мая 2010

Мне просто интересно, возможно ли вообще добавить UIButton или значок в строку заголовка UINavigationControllers?

Я спрашиваю, потому что я ищу непротиворечивую позицию для отображения «о»кнопка.

Ответы [ 4 ]

7 голосов
/ 17 мая 2010

Вы можете сделать это с помощью метода viewDidLoad контроллера представления:

- (void)viewDidLoad {
    [super viewDidLoad];

    UIBarButtonItem* infoButton = [[UIBarButtonItem alloc] initWithTitle:@"Info" 
                                                                   style:UIBarButtonItemStylePlain 
                                                                  target:self 
                                                                  action:@selector(infoButtonSelected:)];
    self.navigationItem.rightBarButtonItem = infoButton;
    [infoButton release];
}

В примере, когда нажимается кнопка, у вас также должен быть метод:

- (void)infoButtonSelected:(id)sender {
        NSLog(@"button tapped");
        // whatever needs to happen when button is tapped
}
0 голосов
/ 22 декабря 2011

навигационная панель - это просто UIView, так что вы можете просто создать UIButton и addSubview. это должно быть viewDidAppear НЕ viewdidLoad.

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];


    // this must be AFTER The animation - otherwise it wont appear in the right spot
    int xpos=self.navigationController.navigationBar.frame.size.width/2+60;
    _toggleOnDeviceButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [_toggleOnDeviceButton addTarget:self action:@selector(toggleButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
    [_toggleOnDeviceButton setFrame:CGRectMake(xpos,2,40,40)];
    [_toggleOnDeviceButton setImage:[UIImage imageNamed:@"blank_button.png"] forState:UIControlStateNormal];
    [_toggleOnDeviceButton setTitle:@"Go" forState:UIControlStateNormal];
    _toggleOnDeviceButton.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;
    [self.navigationController.navigationBar addSubview:_toggleOnDeviceButton];

}
0 голосов
/ 17 мая 2010
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:
    [NSArray arrayWithObjects:
        [UIImage imageNamed:@"change frame btn.png"],
        [UIImage imageNamed:@"im.jpeg"],
        //[UIImage imageNamed:@"im.jpeg"],
        nil]];

    [segmentedControl addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];
    segmentedControl.frame = CGRectMake( 0, 0, 150, 30);
    segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
    segmentedControl.momentary = YES;

    UIBarButtonItem *segmentBarItem = [[UIBarButtonItem alloc] initWithCustomView:segmentedControl];
    [segmentedControl release];

    self.navigationItem.rightBarButtonItem = segmentBarItem;
    [segmentBarItem release];
}

- (void)segmentAction:(id)sender{

    if([sender selectedSegmentIndex] == 0)
    {
    }
    if([sender selectedSegmentIndex] == 1)
    {
    }
0 голосов
/ 17 мая 2010

Вы добавляете его в текущие контроллеры navigationItem. У него есть свойства leftBarButtonItem и rightBarButtonItem.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...