Как добавить несколько элементов UIBarButton в панель навигации? - PullRequest
9 голосов
/ 08 декабря 2011

Я хочу нарисовать несколько кнопок на UINavigationBar. Они будут либо справа, либо слева.

Ответы [ 4 ]

10 голосов
/ 08 декабря 2011

Я сделал один пример, в котором у меня было две кнопки (т.е. Edit и +) справа от NaviagationBar.

1) Вы должны создать одну NSMutableArray (то есть "кнопки" в примере) идобавьте UIBarButtonItem (например, bi1 и bi2) к NSMutableArray (т.е. кнопки).

2) Добавьте NSMutableArray (например, кнопки) на панель инструментов (например, UIToolbar *tools в примере).

3) Добавить панель инструментов в панель навигации.

 NSMutableArray *buttons = [[NSMutableArray alloc] initWithCapacity:2];
 UIToolbar *tools = [[UIToolbar alloc]
                    initWithFrame:CGRectMake(0.0f, 0.0f, 90.0f, 55.01f)];
// Add bar button1.

UIBarButtonItem *bi1 = [[UIBarButtonItem alloc] initWithTitle:@"Edit" style:UIBarButtonItemStylePlain target:self action:@selector(Edit:)];
bi1.style = UIBarButtonItemStyleBordered;
bi1.width = 45;
[buttons addObject:bi1];
//[bi1 release]; Do not release if ARC enabled.

// Add bar button2.
UIBarButtonItem *bi2 = [[UIBarButtonItem alloc] initWithTitle:@"+" style:UIBarButtonItemStylePlain target:self action:@selector(Add:)];
bi2.style = UIBarButtonItemStyleBordered;
[buttons addObject:bi2];
//[bi2 release]; Do not release if ARC enabled.

// Add buttons to toolbar and toolbar to nav bar.
[tools setItems:buttons animated:NO];
//[buttons release];  Do not release if ARC enabled.

 // Add toolbar to nav bar.
UIBarButtonItem *twoButtons = [[UIBarButtonItem alloc] initWithCustomView:tools];
[tools release];
self.navigationItem.rightBarButtonItem = twoButtons;
//[twoButtons release]; Do not release if ARC enabled.
1 голос
/ 08 декабря 2011

Создайте новую UIToolbar в коде и добавьте свои кнопки на панель инструментов.Затем установите self.navigationItem.rightBarButton на вновь созданную панель инструментов (обратите внимание, что в примере нет ARC, поэтому вам может потребоваться удалить вызовы для освобождения):

    // create a toolbar to have two buttons in the right
UIToolbar* tools = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 100, 44.01)];

// create the array to hold the buttons, which then gets added to the toolbar
NSMutableArray* buttons = [[NSMutableArray alloc] initWithCapacity:3];

// create a standard "add" button
UIBarButtonItem* bi = [[UIBarButtonItem alloc]
                       initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addRow)];
bi.style = UIBarButtonItemStyleBordered;
[buttons addObject:bi];
[bi release];

// create a spacer
bi = [[UIBarButtonItem alloc]
      initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
[buttons addObject:bi];
[bi release];

[buttons addObject:self.editButtonItem];

// stick the buttons in the toolbar
[tools setItems:buttons animated:NO];

[buttons release];

// and put the toolbar in the nav bar
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:tools];
1 голос
/ 08 декабря 2011

Здесь я даю вам пример кода, который я использовал как для кнопки, так и для метки.Вы можете создать кнопку вместо метки и изображения, что я создал.Я надеюсь, что это поможет вам

- (void) setLabelForPotraite {

    bar = [self.navigationController navigationBar];    
    [bar setBackgroundColor:[UIColor clearColor]];
    barImg=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"navImg.png"]];
    [bar addSubview:barImg];


    tick_img_lbl=[[UIImageView alloc]initWithFrame:CGRectMake(86, 6,34, 33)];
    tick_img_lbl.image=[UIImage imageNamed:@"tick-1.png"];
    [bar addSubview:tick_img_lbl];
    [tick_img_lbl release];

    tickCount_lbl=[[UILabel alloc] initWithFrame:CGRectMake(126, 2, 50, 40)];
    tickCount_lbl.text=@"";
    tickCount_lbl.font=[UIFont fontWithName:@"Arial" size:24.0];
    [tickCount_lbl setTextAlignment:UITextAlignmentCenter];
    tickCount_lbl.font = [UIFont boldSystemFontOfSize:24.0];
    tickCount_lbl.textColor=[UIColor whiteColor];
    tickCount_lbl.backgroundColor=[UIColor clearColor];
    [bar addSubview:tickCount_lbl];
    [tickCount_lbl release];

    cross_img_lbl=[[UIImageView alloc]initWithFrame:CGRectMake(181, 6, 34, 33)];
    cross_img_lbl.image=[UIImage imageNamed:@"x_green.png"];

    [bar addSubview:cross_img_lbl];
    [cross_img_lbl release];

    crossCount_lbl=[[UILabel alloc] initWithFrame:CGRectMake(221, 2, 50, 40)];
    crossCount_lbl.text=@"";
    crossCount_lbl.font=[UIFont fontWithName:@"Arial" size:24.0];
    crossCount_lbl.font = [UIFont boldSystemFontOfSize:24.0];
    crossCount_lbl.textColor=[UIColor whiteColor];
    [crossCount_lbl setTextAlignment:UITextAlignmentCenter];
    crossCount_lbl.backgroundColor=[UIColor clearColor];
    [bar addSubview:crossCount_lbl];
    [crossCount_lbl release];

    master_img_lbl=[[UIImageView alloc]initWithFrame:CGRectMake(269, 6, 34, 33)];
    master_img_lbl.image=[UIImage imageNamed:@"thumb.png"];
    [bar addSubview:master_img_lbl];
    [master_img_lbl release];

}

Если возникнут какие-либо проблемы в понимании или нет, то, пожалуйста, сообщите мне.

1 голос
/ 08 декабря 2011

сделайте это в вашем xib-файле и создайте свойства или просто переменные в заголовке

@property (nonatomic, retain) IBOutlet UIBarButtonItem *itemOne;

и затем подключите его в xib. Наслаждайтесь

...