【问题标题】:Disabling UINavigationItem custom right view?禁用 UINavigationItem 自定义右视图?
【发布时间】:2012-11-05 17:02:43
【问题描述】:

我创建一个自定义右视图如下:

// Build the Segmented Control
NSArray *segmentTextContent = [NSArray arrayWithObjects:[UIImage imageNamed:@"arrow-dice.png"], [UIImage imageNamed:@"arrow-up.png"], [UIImage imageNamed:@"arrow-down.png"], nil];
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:segmentTextContent];

// Customize the Segmented Control
segmentedControl.momentary = YES;
segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
[segmentedControl addTarget:self action:@selector(segmentChanged:) forControlEvents:UIControlEventValueChanged];

然后我将它添加到我的导航栏,如下所示:

// Add the control to the navigation bar right item
UIBarButtonItem *segmentItem = [[UIBarButtonItem alloc] initWithCustomView:segmentedControl];
[segmentedControl release];
self.navigationItem.rightBarButtonItem = segmentItem;
self.navigationItem.rightBarButtonItem.title = @"";
[segmentItem release];

我可以如下隐藏它:

self.navigationItem.rightBarButtonItem.customView.hidden = NO;

问题 ...但是如何禁用分段控件的所有(或更好的特定元素)?

以下不起作用。

self.navigationItem.rightBarButtonItem.enabled = NO;

任何想法表示赞赏...

谢谢,
马特

【问题讨论】:

    标签: iphone cocoa uinavigationbar uisegmentedcontrol


    【解决方案1】:

    UISegmentedControl.h

    - (void)removeSegmentAtIndex:(NSUInteger)segment animated:(BOOL)animated;
    - (void)removeAllSegments;
    - (void)setEnabled:(BOOL)enabled forSegmentAtIndex:(NSUInteger)segment;       //default is YES
    
      e.g. [segmentedControl setEnabled:NO forSegmentAtIndex:1];
    

    希望对你有帮助

    【讨论】:

    • 谢谢,我在文档中错过了这一点。有没有更简单的方法来禁用整个控件,而不是依次为每个段执行此操作?
    • 它是 UIControl 的子类,所以你应该可以简单地做 segmentedControl.enabled = NO;。在您上面提供的代码中,您将在“rightBarButtonItem”之后和“.enabled”之前添加“.customView”。
    • 遗憾的是,这对我不起作用。 Enabled 不是 CustomView 的有效属性。
    【解决方案2】:
    [navItem.rightBarButtonItem setEnabled:NO];
    

    就这么简单:)

    参考:http://developer.apple.com/library/ios/#documentation/uikit/reference/UIBarItem_Class/Reference/Reference.html 查看 enabled 属性。

    【讨论】:

    • 这仅适用于第一个元素,例如右栏按钮项。如果数组“rightBarButtonItems”中有更多项目,则必须手动禁用每个项目。看到这个:stackoverflow.com/q/20013762/384864
    猜你喜欢
    • 1970-01-01
    • 2018-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    • 2014-02-12
    相关资源
    最近更新 更多