2009-12-24 11 views
5

में UIPickerView को जोड़ने के लिए मुझे रेटिंग (1 - 5) मान दर्ज करने का कार्य है, इसलिए मुझे दिनांक पिकर के लिए नीचे दिया गया कोड मिला, क्या कोई मुझे नीचे कोड बदलने में मदद कर सकता है ताकि यूआईपीकर व्यू को दर से चुनने के लिए जोड़ा जा सके। 1 5UIActionSheet

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 से चयनित मूल्य के साथ प्रवेश किया जाएगा
+0

किसी ने पहले ही इस प्रश्न पूछा गया है। यहां देखें: http://stackoverflow.com/questions/1849873/how-do-i-make-a-uipickerview-in-a-uiactionsheet –

उत्तर

3

सबसे पहले क्या रेटिंग के लिए इतना पाठ क्षेत्र करने के लिए करने के लिए, मुझे लगता है कि आप एक UIDatePickerView के साथ एक UIPickerView भ्रमित किया जा सकता है । डेट पिकर एक विशेष पिकर है जिसे अनुकूलित नहीं किया जा सकता है जबकि यूआईपीकर व्यू को विशेष रूप से अनुकूलित किया जाता है। मार्क डब्ल्यू उनकी टिप्पणी में सही है। I answered this question before और लगता है कि यह UIActionSheet में पिकर जोड़ने की कोशिश करने से बेहतर समाधान प्रदान करता है।

वहां बहुत सारे UIPickerView ट्यूटोरियल हैं।

+1

लिंक टूटा हुआ है, और वास्तव में कोई जवाब नहीं है। अगर आपने कुछ जवाब दिया है तो उसे डुप्लिकेट के रूप में फ़्लैग किया जाना चाहिए, इस तरह उत्तर नहीं दिया गया है। –

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

यह समाधान परिदृश्य और 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; 
-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 
संबंधित मुद्दे