Элементы 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;
}