У меня есть приложение на основе навигации, в которое я пытаюсь добавить уникальный UIToolbar, который будет постоянным независимо от текущего представления, используя это:

Постоянный UIBarButtonItem в UIToolbar?

Проблема в том, что когда я устанавливаю фрейм для navigationController, UITableView внутри navigationController сдвигается на 20 пикселей под панелью навигации, как если бы он начал рисовать за строкой состояния.

Есть идеи, как я могу это исправить? Я застрял!

1
leolobato 23 Сен 2009 в 16:56

3 ответа

Лучший ответ

В итоге я использовал встроенную панель инструментов navigationController.

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

- (void)viewDidLoad {
    [super viewDidLoad];

    MyDelegate *appDelegate = (MyDelegate *)[[UIApplication sharedApplication] delegate];
    [self setToolbarItems:[appDelegate toolbarItems] animated:YES];
}

Я не вижу никаких переходов, и я всегда могу установить его на разные кнопки, если мне нужно, на специальном viewController.

Может, так и должно быть. Кому-нибудь нужна бритва Оккама? :)

2
leolobato 25 Сен 2009 в 17:34
Leolobato, ты сэкономил мне время на чесание головы своим вопросом / ответом. Я заметил небольшую вещь об этой реализации: если вы внимательно посмотрите на свою UIToolbar, когда вы перемещаетесь между UIViewControllers, она на самом деле действительно исчезает и исчезает с элементов панели инструментов. Сейчас я собираюсь использовать такое решение, чтобы найти идеальное решение в независимом UIToolbar (вне UINavigationController).
 – 
Jessedc
14 Июн 2010 в 16:52

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

0
pzearfoss 23 Сен 2009 в 18:27
Я пробовал это, но navigationBar смещается по tableView, поэтому я получаю пустую белую полосу размером 20 пикселей над всем. И tableView по-прежнему скрыт.
 – 
leolobato
25 Сен 2009 в 17:28
Можете ли вы опубликовать ссылку на снимок экрана работающего приложения, который может помочь мне лучше понять, что происходит.
 – 
pzearfoss
25 Сен 2009 в 17:57

Я создал настраиваемый объект, производный от UIToolbar, и добавил свойство staticItems, которое я заполняю в методе init с помощью 3 UIBarButtonItem (и их логики)

Я установил «Показать панель инструментов» для своего объекта UINavigationController и изменил класс панели инструментов на мой новый.

Затем я установил родительский объект навигации в качестве делегата навигации и реализовал этот метод

- (void)navigationController:(UINavigationController *)navigationController  willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    [viewController setToolbarItems:downloadToolbar.staticItems animated:NO];
}
- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{}

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

0
sosergio 1 Авг 2010 в 18:54