2012年2月9日 星期四

iOS學習_於UINavigation上增加多個按鈕

許多程式會使用Navigation作為主要架構,但是空空的Navigation上面不免讓人想增加一些東西上去,而iOS SDK也很和善的將Navigation設置了左右按鈕,讓程式開發人員可以藉由簡單的定義加上按鈕。

self.navigationItem.rightBarButtonItem = myBtn;


如果在iPhone上,可能會覺得一個按鈕就已經將位置佔滿了,但在iPad上面卻擁有很大的空間,所以大部份的人應該會希望在上面可以做出更多的變化,或是塞入更多的按鈕。

概念:
1. rightBarButtonItem或是leftBarButtonItem所接收的參數是UIBarButtonItem
2. UIBarButtonItem在init的時候可以利用initWithCustomView接入一個自定義的UIView

以加入一個圖片按鈕,兩個一般按鈕為例:

//定義三個想要加入的按鈕,
btnitem_layercontrol = [[UIBarButtonItem alloc] initWithTitle:@"功能一"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(btn_function1_Click)];
btnitem_findlocation = [[UIBarButtonItem alloc] initWithTitle:@"功能二"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(btn_function2_Click)];

UIImage *image = [UIImage imageNamed:@"search1_30.png"];
UIBarButtonItem *imagetestButton = [[UIBarButtonItem alloc] initWithImage:image
style:UIBarButtonItemStylePlain
target:self
action:@selector(btn_whereIam_Click)];

//將按鈕加到NSMutableArray當中。
NSMutableArray* buttons = [[NSMutableArray alloc] initWithCapacity:3];
[buttons addObject:imagetestButton];
[buttons addObject:btnitem_layercontrol];
[buttons addObject:btnitem_findlocation];

//建立一個UIToolbar來裝載剛剛建立的NSMutableArray
UIToolbar* toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 200, 44)];
[toolbar setTintColor:[self.navigationController.navigationBar tintColor]];
[toolbar setAlpha:[self.navigationController.navigationBar alpha]];
[toolbar setItems:buttons animated:NO];
[buttons release];

//將toolbar利用initWithCustomView加入UIBarButtonItem,在指給navigationItem.rightBarButtonItem。
UIBarButtonItem *olaBtn = [[UIBarButtonItem alloc] initWithCustomView:toolbar];
self.navigationItem.rightBarButtonItem = olaBtn;

[olaBtn release];
[toolbar release];


如此,若是你有使用UINavigation,則會看到右邊按鈕變成三個,並分別會呼叫btn_function1_Click,btn_function2_Click與btn_whereIam_Click三個方法。

如果配合UIPopoverController就可以產生很不錯的效果。

1 則留言:

張貼留言