【问题标题】:how to add UIPickerView in UIActionSheet如何在 UIActionSheet 中添加 UIPickerView
【发布时间】:2009-12-24 16:27:59
【问题描述】:

我有输入 rating(1 - 5) 值的任务,所以我找到了以下日期选择器代码,谁能帮我修改下面的代码,以便添加 UIPickerView 以从 1 到 5 选择速率

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];

如何做,评分的文本字段将自动输入 UIPIckerView 中的选定值

谢谢

【问题讨论】:

标签: iphone uipickerview uiactionsheet


【解决方案1】:
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)];
lblPickerTitle.text=@"";
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];

【讨论】:

    【解决方案2】:

    首先,我认为您可能会将 UIPickerView 与 UIDatePickerView 混淆。日期选择器是一个无法自定义的专用选择器,而 UIPickerView 是专门用于自定义的。 Marc W 在他的评论中是正确的。我answered this question before 认为它提供了比尝试将选择器添加到 UIActionSheet 更好的解决方案。

    那里有很多 UIPickerView 教程。

    【讨论】:

    • 链接已损坏,并不是真正的答案。如果您在回答之前回答了某些问题,那么它应该被标记为重复而不是这样回答。
    【解决方案3】:

    此解决方案适用于横向和 4 英寸屏幕。

    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;
    

    【讨论】:

      【解决方案4】:
          //
          //  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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-23
        • 1970-01-01
        • 2014-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多