У меня есть приложение на основе навигации, в которое я пытаюсь добавить уникальный UIToolbar, который будет постоянным независимо от текущего представления, используя это:
Постоянный UIBarButtonItem в UIToolbar?
Проблема в том, что когда я устанавливаю фрейм для navigationController, UITableView внутри navigationController сдвигается на 20 пикселей под панелью навигации, как если бы он начал рисовать за строкой состояния.
Есть идеи, как я могу это исправить? Я застрял!
3 ответа
В итоге я использовал встроенную панель инструментов navigationController.
Итак, при каждом viewDidLoad я устанавливаю текущие элементы панели инструментов в один и тот же массив:
- (void)viewDidLoad {
[super viewDidLoad];
MyDelegate *appDelegate = (MyDelegate *)[[UIApplication sharedApplication] delegate];
[self setToolbarItems:[appDelegate toolbarItems] animated:YES];
}
Я не вижу никаких переходов, и я всегда могу установить его на разные кнопки, если мне нужно, на специальном viewController.
Может, так и должно быть. Кому-нибудь нужна бритва Оккама? :)
У меня это часто случалось при добавлении дополнительных представлений в UIWindow. Я пробовал всевозможные советы от людей, но в конце концов просто сместил начало кадра на 20 пикселей, чтобы разместить строку состояния.
Я создал настраиваемый объект, производный от 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
{}
Действительно близко к тому, что вы сделали, немного проще в обслуживании. Надежда поможет кому-нибудь другому.
Похожие вопросы
Связанные вопросы
Новые вопросы
iphone
НЕ ИСПОЛЬЗУЙТЕ этот тег, если вы не обращаетесь конкретно к iPhone и / или iPod touch от Apple. Для вопросов, не зависящих от оборудования, используйте тег [ios]. Больше тегов, которые нужно рассмотреть, это [xcode] (но только если вопрос касается самой IDE), [swift], [target-c] или [cocoa-touch] (но не [cocoa]). Пожалуйста, воздержитесь от вопросов, касающихся iTunes App Store или iTunes Connect. Если вы используете C #, пометьте [mono].