2009-07-28 3 views
2

Кто-нибудь знает, как добавить две системные кнопки в верхнюю правую часть панели навигации? Я знаю, что пользовательские кнопки могут быть добавлены, и я действительно не понимаю, почему системные кнопки тоже не могут этого сделать.Навигационная панель на две кнопки

И мне это действительно нужно. Мне нужна кнопка добавления и кнопка редактирования.

Изменить, чтобы изменить порядок и удалить строки таблицы. Добавить, чтобы добавить новую строку.

Я не могу использовать нижнюю панель инструментов, потому что там есть табуляция.

Может ли кто-нибудь помочь мне?

ответ

0

С навигационной панелью по умолчанию вы можете иметь только три кнопки, если только я что-то не пропускаю. Один слева, один в центре и один справа. Даже если вы создаете кнопку меньшего размера и считаете, что у вас достаточно места, все касания будут регистрироваться на одной и той же кнопке (в зависимости от того, что связано с правой или левой стороной). Если вы хотите получить функциональность, например, навигаторы google, я бы предложил реализовать ее самостоятельно. Это действительно не так сложно, и вы получите именно ту функциональность, которая вам нужна. Если вы решите сделать это, я уверен, что SO может провести вас через сложные части.

0

Интересно, что произойдет, если вы будете использовать настраиваемое представление для UINavigationItem:

myViewController.navigationItem.titleView = myCustomView; 

я себе titleView может расширить весь путь направо, если у вас нет кнопки там. Я заметил, что текст заголовка получает больше места, если нет правой кнопки.

Тогда вы можете добавить метку (для названия) и две кнопки к этому пользовательскому представлению.

3

Что-то, как это должно работать (заменить свои собственные изображения и методы действия):

#define ACTIONEDIT 0 
#define ACTIONADD 1 
... 
UISegmentedControl* segmentedControl = [[UISegmentedControl alloc] 
     initWithItems: [NSArray arrayWithObjects: 
     [UIImage imageNamed:@"icon-edit.png"], 
     [UIImage imageNamed:@"icon-add.png"], 
     nil] 
     ]; 
[segmentedControl addTarget:self 
        action:@selector(segmentAction:) 
      forControlEvents:UIControlEventValueChanged]; 

segmentedControl.frame = CGRectMake(0, 0, 90, 30); 
segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar; 
segmentedControl.momentary = YES; 
[segmentedControl setEnabled:YES forSegmentAtIndex:ACTIONEDIT]; 
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] 
         initWithCustomView:segmentedControl]; 

... 

- (void)segmentAction:(id)sender 
{ 
    UISegmentedControl* segCtl = sender; 
    int action = [segCtl selectedSegmentIndex]; 
    switch (action) { 
    case ACTIONADD: 
    [self addToList]; 
    break; 
    case ACTIONEDIT: 
    [self editList]; 
    break; 
    } 
} 
Смежные вопросы