2009-05-17 76 views
2

創建自定義右視圖如下:禁用UINavigationItem自定義權限視圖?

// 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; 

讚賞任何想法...

感謝,
亞光

回答

5

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]; 

希望幫助

+0

謝謝,我錯過了文檔中的內容。 有沒有一種更簡單的方法來禁用整個控制,而不是每個部分輪流做這個? – 2009-05-17 17:34:43

+0

它是UIControl的一個子類,所以你應該能夠簡單地做segmentedControl.enabled = NO ;.在上面提供的代碼中,您可以在「rightBarButtonItem」之後和「.enabled」之前添加「.customView」。 – 2009-05-17 18:11:51