我有任务输入评级(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
中的选定值自动输入评级的文本字段感谢
答案 0 :(得分: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)];
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];
答案 1 :(得分:3)
首先,我认为您可能会将UIPickerView与UIDatePickerView混淆。日期选择器是一个专门的选择器,当UIPickerView专门用于自定义时,无法自定义。 Marc W的评论是正确的。我answered this question before并认为它提供了比尝试将选择器添加到UIActionSheet更好的解决方案。
有很多UIPickerView教程。
答案 2 :(得分: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;
答案 3 :(得分:-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