我要做一個點選table
cell之後,會像鍵盤一樣滑出的datepicker
首先我先在要顯示datepicer的tableview類別的.h檔中宣告了一個UIDatePicker的變數
UIDatePicker *datepicker;//代表datepicker的物件
並定義他的property
@property (nonatomic,retain) UIDatePicker *datepicker;
接下來到tableview的.m檔當中synthesize
@synthesize datepicker;
要記得在最後要把這個變數release
- (void)dealloc
{
{
[datepicker release];
[super dealloc];
}
同時我們要定義一個記錄datepicker狀態的bool變數,用來記錄datepicker下一次要顯示還是隱藏
BOOL datepickerShow;
在 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath
*)indexPath 這個function中,初始化datepicker
NSInteger row = [indexPath row];
switch (row)
{
case 0:
if (datepicker == nil)
//如果datepicker還沒定義要先初始化
//如果datepicker還沒定義要先初始化
{
self.datepicker =
[[UIDatePicker alloc]initWithFrame:CGRectMake(0.0,367,320,216)];
//決定datepicker的初始位置,因為在我的程式裡有tabbar,因此我設定y值為367
[self.view addSubview:datepicker];//把datepicker物件加入目前的view中
datepickerShow= YES;//把狀態初始化成yes
}
[self showDatepicker:datepickerShow];
//呼叫顯示datepicker的function,會依照目前datepicker狀態來決定要顯示或隱藏
break;
case 1:
[self showDatepicker:NO];//點選其他行datepicker會隱藏
break;
case 2:
[self showDatepicker:NO];//點選其他行datepicker會隱藏
break;
default:
break;
}
最後加入顯示datepicker的function
- (void)showDatepicker:(bool)show
{
CGRect startRect = CGRectMake(0.0,367,320,216);//定義datepicker開始的位置(在view外面)
CGRect endRect = CGRectMake(0.0,171,320,216);//定義datepicker結束的位置(在view裡面)
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationCurve:5];
if(YES==show) //若要顯示,要從view外面移進裡面
[datepickersetFrame:endRect];
else//從view裡移到外面
[datepicker setFrame:startRect];
[UIView commitAnimations];
datepickerShow =!show;//變更狀態
}
這樣就完成我們的滑動datepicker了
沒有留言:
張貼留言