2009-12-24 24 views
5

Estoy teniendo la tarea de ingresar el valor de calificación (1 - 5), así que encontré el siguiente código para el selector de fecha, ¿alguien puede ayudarme a modificar el código siguiente para agregar UIPickerView para elegir la tasa de 1 a 5cómo agregar UIPickerView en UIActionSheet

UIActionSheet *menu = [[UIActionSheet alloc] initWithTitle:@"Ratings" 
               delegate:self 
            cancelButtonTitle:@"Cancel" 
           destructiveButtonTitle:nil 
            otherButtonTitles:nil]; 

UIDatePicker *pickerView = [[UIDatePicker alloc] init]; 
pickerView.datePickerMode = UIDatePickerModeDate; 

[menu addSubview:pickerView]; 
[menu showInView:self.view]; 
[menu sendSubviewToBack:pickerView];  
[menu setBounds:CGRectMake(0,0,320, 500)]; 

CGRect pickerRect = pickerView.bounds; 
pickerRect.origin.y = -100; 
pickerView.bounds = pickerRect; 

[pickerView release]; 
[menu release]; 

qué hacer, así campo de texto para las calificaciones se auto entrado con el valor seleccionado de UIPickerView

gracias

+0

Alguien ha hecho esta pregunta ya. Vea aquí: http://stackoverflow.com/questions/1849873/how-do-i-make-a-uipickerview-in-a-uiactionsheet –

Respuesta

3

en primer lugar, creo que podría estar confundiendo un UIPickerView con un UIDatePickerView . El selector de fecha es un selector especializado que no puede personalizarse mientras que un UIPickerView está específicamente diseñado para ser personalizado. Marc W tiene razón en su comentario. I answered this question before y siento que ofrece una mejor solución que tratar de agregar el selector a la Hoja de UIA.

Hay muchos tutoriales de UIPickerView.

+1

enlace roto, y realmente no es una respuesta. Si respondió algo antes, debería marcarse como un duplicado no respondido así. –

13
actionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self  cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil]; 
actionSheet.actionSheetStyle = UIActionSheetStyleBlackOpaque; 


    picker = [[UIPickerView alloc] initWithFrame:CGRectMake(0,40, 320, 216)]; 
    picker.showsSelectionIndicator=YES; 
    picker.dataSource = self; 
    picker.delegate = self; 
    picker.tag=SelectedDropDown; 
    [actionSheet addSubview:picker]; 

UIToolbar *tools=[[UIToolbar alloc]initWithFrame:CGRectMake(0, 0,320,40)]; 
tools.barStyle=UIBarStyleBlackOpaque; 
[actionSheet addSubview:tools]; 
[tools release]; 


UIBarButtonItem *doneButton=[[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleBordered target:self action:@selector(btnActinDoneClicked)]; 
doneButton.imageInsets=UIEdgeInsetsMake(200, 6, 50, 25); 
UIBarButtonItem *flexSpace= [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; 

NSArray *array = [[NSArray alloc]initWithObjects:flexSpace,doneButton,nil]; 

[tools setItems:array]; 
[doneButton release]; 
[flexSpace release]; 

//picker title 
UILabel *lblPickerTitle=[[UILabel alloc]initWithFrame:CGRectMake(60,8, 200, 25)]; 
[email protected]""; 
lblPickerTitle.backgroundColor=[UIColor clearColor]; 
lblPickerTitle.textColor=[UIColor whiteColor]; 
lblPickerTitle.textAlignment=NSTextAlignmentCenter; 
lblPickerTitle.font=[UIFont boldSystemFontOfSize:15]; 
[tools addSubview:lblPickerTitle]; 


[actionSheet showFromRect:CGRectMake(0,480, 320,215) inView:self.view animated:YES]; 
[actionSheet setBounds:CGRectMake(0,0, 320, 411)]; 
[actionSheet release]; 
0

Esta solución funciona en el paisaje y en las pantallas de 4 pulgadas.

UIActionSheet *aac = [[UIActionSheet alloc] initWithTitle:@"Choose Date and Time" 
               delegate:self 
             cancelButtonTitle:nil 
            destructiveButtonTitle:nil 
             otherButtonTitles:nil]; 


[datePicker addTarget:self action:@selector(dateChanged) forControlEvents:UIControlEventValueChanged]; 

pickerDateToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)]; 
pickerDateToolbar.barStyle = UIBarStyleBlackOpaque; 
[pickerDateToolbar sizeToFit]; 

NSMutableArray *barItems = [[NSMutableArray alloc] init]; 

UIBarButtonItem *flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil]; 
[barItems addObject:flexSpace]; 

UIBarButtonItem *doneBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(DatePickerDoneClick)]; 
[barItems addObject:doneBtn]; 

[pickerDateToolbar setItems:barItems animated:YES]; 

[aac addSubview:pickerDateToolbar]; 
[aac addSubview:datePicker]; 

[aac showFromTabBar:self.tabBarController.tabBar]; 
CGFloat wideth = self.view.frame.size.width; 
if (UIDeviceOrientationIsLandscape([self interfaceOrientation])) { 
    [aac setBounds:CGRectMake(0,0,wideth, 355)]; 
    [datePicker sizeToFit]; 
} else { 
    [aac setBounds:CGRectMake(0,0, wideth, 470)]; 
    [datePicker sizeToFit]; 
} 
picker = aac; 
-1
// 
    // ViewController.m 
    // TestApplication 
    // 
    // Created by Macbook on 08/02/14. 
    // Copyright (c) 2014 Macbook. All rights reserved. 
    // 

    #import "ViewController.h" 

    @interface ViewController() 

    @end 

    @implementation ViewController 
    @synthesize isSelectDate; 

    - (void)viewDidLoad 
    { 
     [super viewDidLoad]; 
     // Do any additional setup after loading the view, typically from a nib. 
    } 

    - (void)didReceiveMemoryWarning 
    { 
     [super didReceiveMemoryWarning]; 
     // Dispose of any resources that can be recreated. 
    } 

    #pragma mark -OpenActionshhetWithDatePicker Event 

    -(void)openactionsheetWithDatePicker 
    { 

      actionSheet = [[UIActionSheet alloc] initWithTitle:@"Choose Date" delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:@"",@"",@"",nil]; 
      actionSheet.delegate = self; 
      [actionSheet setActionSheetStyle:UIActionSheetStyleBlackOpaque]; 
      actionSheet.tag = 3; 
      [actionSheet showInView:self.view]; 

      UIButton *btncancelpicker = [[UIButton buttonWithType:UIButtonTypeCustom]retain]; 
      [btncancelpicker setFrame:CGRectMake(5, 5, 70,30)]; 
      [btncancelpicker setBackgroundImage:[UIImage imageNamed:@"cancel.png"] forState:UIControlStateNormal]; 
      [btncancelpicker addTarget:self action:@selector(datePickerCancelClicked) forControlEvents:UIControlEventTouchUpInside]; 
      [actionSheet addSubview:btncancelpicker]; 

      UIButton *btndonepicker = [[UIButton buttonWithType:UIButtonTypeCustom]retain]; 
      if([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationLandscapeLeft ||[UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationLandscapeRight) 
       [btndonepicker setFrame:CGRectMake(405, 5, 70,30)]; 
      else if([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortrait ||[UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortraitUpsideDown) 
       [btndonepicker setFrame:CGRectMake(240, 5, 70,30)]; 
      [btndonepicker setBackgroundImage:[UIImage imageNamed:@"done.png"] forState:UIControlStateNormal]; 
      [btndonepicker addTarget:self action:@selector(datePickerDoneClicked) forControlEvents:UIControlEventTouchUpInside]; 
      [actionSheet addSubview:btndonepicker]; 

      datePicker = [[UIDatePicker alloc]initWithFrame:CGRectMake(0, 45, 320, 190)]; 
      datePicker.datePickerMode = UIDatePickerModeDate; 
      datePicker.date = [NSDate date]; 
      [actionSheet addSubview:datePicker]; 

    } 
    -(void)datePickerDoneClicked 
    { 
     NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init]; 
     [outputFormatter setDateFormat:@"dd/MM/yyyy"]; 
     NSString *tmp=[outputFormatter stringFromDate:datePicker.date]; 
     if (isSelectDate==TRUE) { 
      [btnfrom setTitle:tmp forState:UIControlStateNormal]; 
     } 
     else{ 
      [btnTo setTitle:tmp forState:UIControlStateNormal]; 

     } 
     [outputFormatter release]; 

     [actionSheet dismissWithClickedButtonIndex:0 animated:YES]; 
    } 

    -(void)datePickerCancelClicked 
    { 
     [actionSheet dismissWithClickedButtonIndex:0 animated:YES]; 
    } 

    #pragma mark -Button Click Event 

    -(IBAction)btnfromPress:(id)sender 
    { 
     isSelectDate=TRUE; 
     [self openactionsheetWithDatePicker]; 
    } 
    -(IBAction)btnToPress:(id)sender 
    { 
     isSelectDate =FALSE; 
     [self openactionsheetWithDatePicker]; 
    } 
    -(IBAction)btnRoomPress:(id)sender 
    { 
     [self openRoomPicker]; 
    } 
    -(void)openRoomPicker 
    { 
     arrRooms = [[NSMutableArray alloc] init]; 

     [arrRooms addObject:@"1 Room"]; 
     [arrRooms addObject:@"2 Room"]; 

     roomPickerview.hidden=FALSE; 
     roomPickerview.delegate=self; 
     roomPickerview.dataSource=self; 
     [roomPickerview selectRow:0 inComponent:0 animated:NO]; 
     NSString *strRoom= [arrRooms objectAtIndex:[roomPickerview selectedRowInComponent:0]]; 
     [btnRoom setTitle:strRoom forState:UIControlStateNormal]; 

    } 

    #pragma mark -PickerView Method 

    - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pv; 
    { 
     return 1; 
    } 

    - (NSInteger)pickerView:(UIPickerView *)pv numberOfRowsInComponent:(NSInteger)component; 
    { 
     return [arrRooms count]; 
    } 


    - (void)pickerView:(UIPickerView *)_pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component 
    { 
     switch ([roomPickerview selectedRowInComponent:0]) 
     { 
      case 0: 
       NSLog(@"select row is 1"); 
       [btnRoom setTitle:[arrRooms objectAtIndex:row] forState:UIControlStateNormal]; 
       break; 

      case 1: 
       NSLog(@"select row is 2"); 
       [btnRoom setTitle:[arrRooms objectAtIndex:row] forState:UIControlStateNormal]; 

       break; 

      default: 
       break; 
     } 
    } 
    //- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view 
    //{ 
    //   UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(20.0f, 0.0f, 300.0f, 60.0f)]; //x and width are mutually correlated 
    //   label.textAlignment = NSTextAlignmentLeft; 
    //  
    //   label.text = [arrRooms objectAtIndex:row]; 
    //  
    //   return label; 
    //  } 
    // 

    - (NSString *)pickerView:(UIPickerView *)pv titleForRow:(NSInteger)row forComponent:(NSInteger)component; 
    { 
     if (arrRooms!=nil) 
     { 
      return [arrRooms objectAtIndex:row]; 
     } 

     return @""; 
    } 


    @end 

// 
// ViewController.h 
// TestApplication 
// 
// Created by Macbook on 08/02/14. 
// Copyright (c) 2014 Macbook. All rights reserved. 
// 

#import <UIKit/UIKit.h> 

@interface ViewController : UIViewController<UIActionSheetDelegate,UIPickerViewDataSource,UIPickerViewDelegate> 
{ 
    IBOutlet UIButton *btnfrom; 
    IBOutlet UIButton *btnTo; 
    UIActionSheet *actionSheet; 
    UIDatePicker *datePicker; 

    BOOL isSelectDate; 
    IBOutlet UIButton *btnRoom; 
    IBOutlet UIPickerView *roomPickerview; 


    NSMutableArray *arrRooms; 



} 
@property(nonatomic,readwrite) BOOL isSelectDate; 
-(IBAction)btnfromPress:(id)sender; 
-(IBAction)btnToPress:(id)sender; 
-(IBAction)btnRoomPress:(id)sender; 
-(void)openactionsheetWithDatePicker; 
-(void)openRoomPicker; 


@end