禁用位于UINavigationBar项目的系统映像周围的边框

时间:2012-03-08 07:15:12

标签: iphone uinavigationcontroller uibutton

我想禁用iPhone SDK的添加按钮边框,所以它只是“+”按钮(没有黑色bg):

enter image description here

当它位于工具栏中时,这似乎是一项简单的任务,但是当它位于UINavigationBar中时却不是。无论如何,如果有人知道如何,或者甚至可能,那么请分享!这是我在 RootViewController.m 中的当前代码:

self.title = @"Code Master";
addButton = [[UIBarButtonItem alloc]
                initWithBarButtonSystemItem:UIBarButtonSystemItemAdd 
                target:self action:@selector(addButtonClicked:)];
self.navigationItem.rightBarButtonItem = addButton; 

修改

@Dee所以你的代码很棒,显示我想要的东西!现在还有另一个问题我会解释:

编辑按钮: UINavigationBar的左侧
完成按钮: UINavigationBar的左侧(隐藏);单击“编辑”按钮时,它将使用此“完成”按钮替换“编辑”按钮 加按钮: UINavigationBar的右侧;在“编辑模式”时隐藏,在“正常模式下显示(当完成按钮不可见时)”时显示

所以基本上我现在的问题是每当我点击编辑,然后完成时,加号按钮不会从隐藏中返回。我正在使用您的确切代码,它与我之前的代码一起使用。我很确定这是因为在你的代码中,没有任何标签“addButton”。以下是我的主文件中的代码:

-(void)setEditing:(BOOL)editing animated:(BOOL)animated {
    [super setEditing:editing animated:YES];
    if (editing)
    {
        self.navigationItem.rightBarButtonItem = nil;
    }
    else
    {
          UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
          [button setImage:[UIImage imageNamed:@"Plus.png"] forState:UIControlStateNormal];
          [button addTarget:self action:@selector(addButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
          [button setFrame:CGRectMake(0, 0, 50, 29)];
          UIBarButtonItem *barBtn = [[UIBarButtonItem alloc] initWithCustomView:button];
          self.navigationItem.rightBarButtonItem = barBtn;
          [barBtn release];
    }

    [self.tableView reloadData];
}

1 个答案:

答案 0 :(得分:1)

创建“+”图像并将其设置为按钮&将该按钮提供给UIBarButtonItem,如下所示:

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setImage:[UIImage imageNamed:@"Plus.png"] forState:UIControlStateNormal];
[button addTarget:self action:@selector(addButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
[button setFrame:CGRectMake(0, 0, 50, 29)];
UIBarButtonItem *barBtn = [[UIBarButtonItem alloc] initWithCustomView:button];
[self.navigationItem setRightBarButtonItem:barBtn];
[barBtn release];