Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 子类化UIToolbar并重写drawRect:-UIBarButtonims未显示_Ios_Uinavigationcontroller_Uibarbuttonitem_Uitoolbar_Drawrect - Fatal编程技术网

Ios 子类化UIToolbar并重写drawRect:-UIBarButtonims未显示

Ios 子类化UIToolbar并重写drawRect:-UIBarButtonims未显示,ios,uinavigationcontroller,uibarbuttonitem,uitoolbar,drawrect,Ios,Uinavigationcontroller,Uibarbuttonitem,Uitoolbar,Drawrect,上下文 我正在使用'initWithNavigationBarClass'方法通过自定义工具栏初始化UINavigationController,下面是我允许初始化UINavigationController的行 navigationController = [[UINavigationController alloc] initWithNavigationBarClass:nil toolbarClass:[QuestionToolbar class]]; 是类“QuestionToolba

上下文

我正在使用'initWithNavigationBarClass'方法通过自定义工具栏初始化UINavigationController,下面是我允许初始化UINavigationController的行

navigationController = [[UINavigationController alloc] initWithNavigationBarClass:nil toolbarClass:[QuestionToolbar class]];
是类“QuestionToolbar”,我是UIToolbar的子类并覆盖drawrect,这里是drawrect方法:

    - (void)drawRect:(CGRect)rect
    {
      [super drawRect:rect];
      UIImage *backgroundImage = [UIImage imageNamed:@"44px_background_red.png"];
      [backgroundImage drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
    }
下面是我试图添加UIBarButtonims的viewController中的相关代码

UIBarButtonItem *spacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
UIBarButtonItem *beginItem = [[UIBarButtonItem alloc] initWithTitle:@"Begin Quiz" style:UIBarButtonItemStylePlain target:self action:@selector(beginAction:)];

[beginItem setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: [UIColor whiteColor], UITextAttributeTextColor,nil] forState:UIControlStateNormal];

NSArray *items = [NSArray arrayWithObjects:spacer, beginItem, spacer, nil];
[self.navigationController.toolbar setItems:items];

[self.navigationController setToolbarHidden:NO];
问题

当我尝试添加UIBarButtonims时,它们不会显示,如何将它们添加到此工具栏


我假设这与我的重写drawRect有关,我尝试使用自定义UIToolbar,问题不在于
-(void)drawRect:(CGCrect)rect


我不知道我们这里是否尝试在UIToolbar上添加按钮,但您应该尝试在UIViewController类的
-(void)viewDidDisplay
方法中添加它们。通过这种方式,它对我起了作用。

我想我明白了,我使用的代码:[self.navigationController.toolbar setItems:items]不起作用。但是如果我使用self.toolbarItems=items,它就工作了。不知道为什么?谢谢你的回答DanyData,请参阅我之前的评论,我改为使用self.toolbarItems而不是self.navigationController.toolbar setItems:item,这将其修复。知道为什么吗?苹果文档基本上说明导航控制器
从活动视图控制器的toolbarItems属性中获取其当前项目集。因此,设置toolbarItems的正确方法基本上是通过UIViewController.toolbarItems属性。@我认为这不正确,请参见: