UIToolbar项目未显示

时间:2009-08-30 09:36:00

标签: iphone cocoa-touch uinavigationcontroller uitoolbar

我有一个UINavigationController被推送到DetailsViewController。在这个DetailsViewController中,我想使用每个UINavigationController附带的工具栏(至少从iPhone OS3.0开始)。

因此,在我的DetailsViewController中的viewDidLoad中,我创建了一个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 个答案:

答案 0 :(得分:37)

已经做了一些挖掘和调试,我得出结论,我尝试修改navigationController的方法是错误的。相反,我应该只设置DetailsViewController的toolbarItems属性。

之后,我的代码运行良好:

- (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;
}