2013-03-19 55 views
0

正常的按鈕,你可以做如何使UIBarButton工作作爲開關鑑於UIBarButton沒有選定的屬性

btn.selected =!btn.selected。

我會如何用UIBarButton來解決這個問題?

+0

UIBarButtonItem * add = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addNewRow :)]; (void)addNewRow:(UIButton *)sender(or) - (void)addNewRow:(UIBarButton *)sender .... both will work – 2013-03-19 09:05:29

回答

2

您可以用自定義視圖

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
[button setImage:normalImage forState:UIControlStateNormal]; 
[button setImage:selectedImage forState:UIControlStateSelected]; 
[button addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside]; 
UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:button]; 

然後

-(void)btnClick:(id)sender{ 
UIBarButtonItem *item = (UIBarButtonItem *)sender; 
UIButton *button = (UIButton *)item.customView; 
[button setIsSelected:YES]; 
} 
1

想法1.如果您在IB中創建界面,請嘗試將標準UIButton對象拖入UIToolbar。這應該將UIButton封裝在UIBarButton中。 將UIBarButton對象設置爲普通。像往常一樣創建網點。 然後,您可以使用標準按鈕以及所有可愛的標準事物,例如工具欄中的選定狀態。

想法2.我幾乎放棄了使用工具欄,因爲控件不靈活,正如你找到的。現在我只需將UIToolbar的實例替換爲UIViews,並執行少量代碼以管理旋轉,調整大小等等......我發現它更加靈活,讓我更容易地包含其他控件。

2

你可以在UIBarItem裏面使用一個自定義的按鈕,保持一個按鈕就可以了。

UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithCustomView:self.yourButton] 

[self.navigationItem setRightBarButtonItem:barButton]; 

然後:

self.yourButton.select = !self.yourButton.select;