雖然覺得這樣的使用有點麻煩(太囉唆),但是還是記錄一下。
.h內的interface中加入UIPickerViewDelegate,UIActionSheetDelegate,UIPickerViewDataSource並且所使用的視圖元件要連接Outlets-Delegate要連接到File's Owners,否則無法抓到回傳的event。
部分程式碼如下:
1.建立一個button並將Outlets-Delegate要連接到File's Owners
2.建立一個function內容如下,用button來觸發
//建立動作表
UIActionSheet *SpeakSheet=[[UIActionSheet alloc]initWithTitle:@"\n\n\n\n\n\n\n\n\n\n\n\n\n" delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:@"set Sepaker", nil];
//顯示動作表
[SpeakSheet showInView:self.view];
//建立挑選器視圖
UIPickerView *SpeakPickerView = [[UIPickerView alloc]init];
SpeakPickerView.tag=101;
SpeakPickerView.delegate=self;
SpeakPickerView.dataSource=self;
SpeakPickerView.showsSelectionIndicator=YES;
[SpeakSheet addSubview:SpeakPickerView];
3.如果有連接到File's Owner's就會被觸發,就可以在接到資訊
#pragma mark -
#pragma mark - SpeakPickerView methods
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
if (pickerView.tag==101){
return 1;
}
return 1;//N個轉軸
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
if (pickerView.tag==101){
return SpeakName.count;
}
return 1;//每個轉軸N個選項
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
NSLog(@"component:%i row:%i",component,row);
if (pickerView.tag==101){
return [SpeakName objectAtIndex:row];
}
return @"error";
}
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
NSLog(@"clickedButtonAtIndex %i",buttonIndex);//回傳資料的地方
//這裡沒寫完,要判斷要切換到誰,不過不重要,因為要換方法,所以就不再寫
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
//當選定的時候從這邊抓取值,當按下click之後即可,讀取最正確地值作處理
NSLog(@"didSelectRow");
}
