Элементы UIToolbar не отображаются
У меня есть UINavigationController, который выталкивает элемент DetailsViewController. В этом DetailsViewController я хочу использовать панель инструментов, которая поставляется с каждым UINavigationController (по крайней мере, с iPhone OS3.0).
Итак, в viewDidLoad в моем DetailsViewController я создаю UIBarButtonItem, я добавляю его в массив и передаю его контроллеру навигации:
- (void) viewDidLoad {
UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemBookmarks target:self action:@selector(selectTemplate)];
NSArray *items = [NSArray arrayWithObject: item];
TestUIAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
UINavigationController *navController = delegate.navigationController;
[navController setToolbarItems: items animated:NO];
[navController setToolbarHidden: NO animated: YES];
}
Но по какой-то причине, пока UIToolbar анимируется на экране, элемент не добавляется на панель инструментов.
Есть ли какие-то конкретные вещи, которые нужно выполнить с UIToolbar, чтобы это работало?
P.S.: приложение находится в (принудительном) ландшафтном режиме, а navigationController.view имеет на нем поворотное преобразование. Может ли это иметь к этому какое-либо отношение?
Ответы
Ответ 1
Сделали еще несколько копаний и отладки, и я пришел к выводу, что мой подход к попытке изменить navigationController
был неправильным. Вместо этого я должен был просто установить свойство toolbarItems элемента DetailsViewController.
После этого мой код работал нормально:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemBookmarks target:self action:@selector(selectTemplate)];
NSArray *myToolbarItems = [[NSArray alloc] initWithObjects: item, nil];
[self setToolbarItems: myToolbarItems];
[myToolbarItems release];
}
return self;
}