我有一个应用程序,在主视图中有 3 个按钮,并且 2 个按钮必须显示一个UIPickerView
事件选择(其中一个)和时间选择(第二个)。
UIPickerViewDelegate
只让我实现一次方法,所以,我该怎么做才能更改UIPickerView
.
这是 mi .m 代码:
#import "Home_ViewController.h"
@interface Home_ViewController ()
@end
@implementation Home_ViewController
@synthesize index,arrayHoras,arrayRutas,pickerView, rutaId, horas, botonHoras, botonRuta, hora;
- (IBAction)selectRuta:(id)sender {
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.3];
[self.view addSubview:pickerView];
[UIView commitAnimations];
[pickerView setHidden:NO];
}
- (IBAction)horasBoton:(id)sender {
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.3];
[self.view addSubview:pickerView];
[UIView commitAnimations];
[pickerView setHidden:NO];
}
- (void)viewDidLoad
{
[super viewDidLoad];
hora = 1;
arrayRutas = [[NSMutableArray alloc] init];
arrayHoras = [[NSMutableArray alloc] initWithObjects: @"1", @"2", @"3", @"4", @"5", @"6", @"7", @"8", @"9", @"10", @"11", @"12", nil];
sqlite3 *turutaDB;
NSArray *dirPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *databasePath = [[dirPath objectAtIndex:0] stringByAppendingPathComponent:@"turuta.db"];
NSLog(@"path de la bbdd: %@", databasePath);
if(sqlite3_open([databasePath UTF8String], &turutaDB)==SQLITE_OK) {
NSLog(@"2 Base de datos creada y abierta con exito");
} else {
NSLog(@"Ha fallado la apertura de la bbdd");
}
sqlite3_stmt *sentenciaRutas;
NSString *querySQLrutas = @"SELECT id,nombre FROM rutas";
if(sqlite3_prepare_v2(turutaDB, [querySQLrutas UTF8String], -1, &sentenciaRutas, NULL)==SQLITE_OK){
NSLog(@"Consulta preparada ok");
} else {
NSLog(@"Consulta ha fallado al preparar: %s", sqlite3_errmsg(turutaDB));
}
while (sqlite3_step(sentenciaRutas) == SQLITE_ROW) {
NSString *selectRutas = [[NSString alloc] initWithUTF8String:
(const char *) sqlite3_column_text(sentenciaRutas, 1)];
[arrayRutas addObject:selectRutas];
}
sqlite3_finalize(sentenciaRutas);
// [self.tabBarController.tabBar setHidden:YES];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
if(!botonHoras.isTouchInside) {
return [arrayHoras count];
} else {
return [arrayRutas count];
}
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
if(!botonHoras.isTouchInside) {
return [arrayHoras objectAtIndex:row];
} else {
return [arrayRutas objectAtIndex:row];
}
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
if (!botonHoras.isTouchInside) {
horas= [[arrayHoras objectAtIndex:row] intValue];
botonHoras.titleLabel.text = [NSString stringWithFormat:@"%d Horas", horas];
[self.pickerView removeFromSuperview];
} else {
//GMSPolylineOptions *optionsLine = [GMSPolylineOptions options];
GMSMutablePath *ruta = [GMSMutablePath path];
sqlite3 *turutaDB;
NSArray *dirPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *databasePath = [[dirPath objectAtIndex:0] stringByAppendingPathComponent:@"turuta.db"];
NSLog(@"path de la bbdd: %@", databasePath);
if(sqlite3_open([databasePath UTF8String], &turutaDB)==SQLITE_OK) {
NSLog(@"2 Base de datos creada y abierta con exito");
} else {
NSLog(@"Ha fallado la apertura de la bbdd");
}
sqlite3_stmt *sentenciaId;
NSString *querySQLid = [NSString stringWithFormat: @"SELECT id FROM rutas WHERE nombre = '%@'", [arrayRutas objectAtIndex:row]];
if(sqlite3_prepare_v2(turutaDB, [querySQLid UTF8String], -1, &sentenciaId, NULL)==SQLITE_OK){
NSLog(@"Consulta preparada ok");
} else {
NSLog(@"Consulta ha fallado al preparar: %s", sqlite3_errmsg(turutaDB));
}
while (sqlite3_step(sentenciaId) == SQLITE_ROW) {
NSString *id = [[NSString alloc] initWithUTF8String:
(const char *) sqlite3_column_text(sentenciaId, 0)];
rutaId = [id intValue];
NSLog(@"%d",rutaId);
}
sqlite3_finalize(sentenciaId);
sqlite3_stmt *sentenciaPolyLine;
NSString *querySQLpoliline =[NSString stringWithFormat: @"SELECT coordx,coordy FROM config_ruta WHERE id_ruta = %d", rutaId];
if(sqlite3_prepare_v2(turutaDB, [querySQLpoliline UTF8String], -1, &sentenciaPolyLine, NULL)==SQLITE_OK){
NSLog(@"Consulta preparada ok");
} else {
NSLog(@"Consulta ha fallado al preparar: %s", sqlite3_errmsg(turutaDB));
}
while (sqlite3_step(sentenciaPolyLine) == SQLITE_ROW) {
NSString *x = [[NSString alloc] initWithUTF8String:
(const char *) sqlite3_column_text(sentenciaPolyLine, 1)];
NSString *y = [[NSString alloc] initWithUTF8String:
(const char *) sqlite3_column_text(sentenciaPolyLine, 0)];
double coordx = [x doubleValue];
double coordy = [y doubleValue];
NSLog(@"%f | %f",coordy,coordx);
[ruta addCoordinate:CLLocationCoordinate2DMake(coordy, coordx)];
}
sqlite3_finalize(sentenciaPolyLine);
botonRuta.titleLabel.text = [arrayRutas objectAtIndex:row];
[self.pickerView removeFromSuperview];
[pickerView selectRow:0 inComponent:0 animated:YES];
}
}
- (IBAction)rutaboton:(id)sender {
}
请帮忙...