【问题标题】:How to make leftBarButtonItem looking like backBarButtonItem?如何使 leftBarButtonItem 看起来像 backBarButtonItem?
【发布时间】:2011-11-15 21:49:14
【问题描述】:

默认解决方案不合适:

  1. 要更改以前的 ViewController 标题 - 我需要创建自己的函数来控制按钮的触摸
  2. 制作 leftBarButtonItem 并隐藏 backBarButtonItem - leftBarButtonItem 看起来不像默认的 backBarButtonItem。

【问题讨论】:

    标签: ios uinavigationcontroller uinavigationbar uinavigationitem backbarbuttonitem


    【解决方案1】:

    这是一个创建自定义 leftBarButtonItem 的示例:

    UIImage *buttonImage = [UIImage imageNamed:@"backbutton.png"];
    UIButton *aButton = [UIbutton buttonWithType:UIButtonTypeCustom];
    [aButton setImage:buttonImage forState:UIControlStateNormal];
    aButton.frame = CGRectMake(0.0,0.0,buttonImage.size.width,buttonImage.size.height);
    [aButton addTarget:self action:@selector(aSelector) forControlEvents:UIControlEventTouchUpInside];
    UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithCustomView:aButton];
    self.navigationItem.leftButtonItem = backButton;
    

    希望对你有帮助...

    编辑:

    试试这个...

    UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"yourimage.jpg"] style:UIBarButtonItemStyleBordered target:self action:@selector(aSelector)];
    self.navigationItem.leftBarButtonItem = backButton;
    

    我不记得后退按钮是什么类型的按钮,尝试将默认样式更改为其他。祝你好运!

    【讨论】:

    • 谢谢,如果没有其他方法,我会使用它。但是我希望让它更灵活(当它只依赖于一个图像和backBarButtonItem的样式而不依赖于图像资源时)
    • 您的第二个示例更糟糕,因为 sdk 不允许同时为该按钮设置图像和标题。所以我应该为所有标签制作不同的图像。你想给我建议吗?
    • 嗯...我还没有查看导航栏可以具有的所有样式和类型的按钮...您可以尝试将 UIBarButtonItemStyleBordered 更改为另一种样式吗?也许有一些样式就像返回按钮......然后你可以从 initWithTitle 而不是 initWithImage 开始。我现在没有Mac,无法制作更多样品,稍后我会尝试!
    • 您可以使用虚拟机和/或“Hack OS”
    • 我的意思是我上班的时候只有一个mac可以试试:)
    【解决方案2】:

    只需创建一个自定义barbuttonitem 并使用类似于后退按钮项的图片对其进行自定义。 您可以从导航堆栈中的视图控制器获取其文本。

    然后处理水龙头实现想要的效果

    【讨论】:

    • 你能在这里举更具体的例子吗?
    【解决方案3】:

    您可以将自定义视图作为条形按钮分配给导航控制器,如下所示:

    UIBarButtonItem *customItem = [[UIBarButtonItem alloc] initWithCustomView:yourCustomizedControl];
    [yourCustomizedControl release];
    
    self.navigationItem.leftBarButtonItem = customItem;
    [customItem release];
    

    如果需要,请查看this Apple documentation 以获得更详细的说明。

    【讨论】:

    • 据我了解,我需要更改 backBarButtonItem 标题,然后我需要将其转换为 UIView 并将其分配给 leftBarButtonItem。但是怎么做呢?
    • 我要做的是创建一个简单的 UIButton,按照我想要的方式自定义它,我的意思是给它一个背景图像、标题等。你可以找到一个图像类似于 backBarButtonItem 并将其分配给您新创建的 UIButton。然后为这个 UIButton 分配一个目标动作,这样当它被点击时它就会做你想做的事情。最后,将此 UIButton 指定为导航的 leftBarButton。如上所述的控制器。
    • 现在我觉得最好还是把leftBarButtonItem删掉,把它的功能放到viewWillDisapear中
    • 好的。至少现在你知道其他选择了:)
    【解决方案4】:

    这是添加类似后退按钮的技巧:

    UINavigationItem* backNavigationItem = [[UINavigationItem alloc] initWithTitle:@"Back"];
    [_navigationBar pushNavigationItem:backNavigationItem animated:NO];
    [backNavigationItem release];
    

    您可以通过这种方式添加更多项目(例如标题、右键):

    UINavigationItem *navigationItem = [[UINavigationItem alloc] initWithTitle:@"Title"];
    navigationItem.rightBarButtonItem = // Some UIBarButtonItem
    [_navigationBar pushNavigationItem:navigationItem animated:NO];
    [navigationItem release];
    

    【讨论】:

    • 我从来没有因为这个被拒绝过
    • 看起来此解决方案使用“自定义”UINavigationBar (_navigationBar = [[UINavigationBar alloc] initWithFrame:...]; [self.view addSubview:_navigationBar]; _navigationBar.items = ...; _navigationBar.delegate = self) 而不是 self.navigationController.navigationBar。您需要适当地实现 UINavigatonBarDelegate。
    猜你喜欢
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 2018-08-31
    • 2011-04-27
    • 1970-01-01
    • 2011-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多