2014-04-30 93 views
0

目前我正在創建一個項目,要求用戶在與應用程序交互時輸入日期和時間,但我不太滿意標準UIKit UIDatePicker看起來,所以試圖建立自己的。用UITableViews創建一個帶有循環的自定義UIDatePicker

目前我的功能正常,可以在多個UITableView的情況下保持一天,一小時,一分鐘和可選AM/PM,如果用戶指定了非24h的時間。

我堅持的一點是得到tableViews循環選項,因爲你在常規UIDatePicker。有沒有什麼技術可以用UITableView來創造這種效果?

我也簡單地研究過UIPickerView s,但我不確定循環的功能是否比tableView更容易/更難。我知道這些的設計可以用

- (void)selectRow:(NSInteger)row inComponent:(NSInteger)component animated:(BOOL)animated 

作爲一個例子來定製,爲清除最新的更新有一個定製的日期選擇器實現: Clear Date Picker

回答

0

我不認爲有這樣做的標準方法這個。也許你可以檢查tableview的scrollView內容偏移量,並調整它跳到你想要的位置。

爲了正常工作,您無法看到需要複製單元格數目的跳轉。

不知道這是最好的方式,但是這個代碼工作的,試試吧:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.tableView.dataSource = self; 
    self.tableView.delegate = self; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    return numberOfCells*2; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"myCell"]; 
    if(!cell) { 
     cell = [[UITableViewCell alloc] init]; 
    } 

    cell.textLabel.text = [NSString stringWithFormat:@"Cell N: %d", indexPath.row%numberOfCells]; 

    return cell; 
} 

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 
    if((scrollView.contentOffset.y+scrollView.frame.size.height)>=scrollView.contentSize.height) { 
     scrollView.contentOffset = CGPointMake(0, scrollView.contentSize.height/2-scrollView.frame.size.height); 
    } 

    if(scrollView.contentOffset.y<=0) { 
     scrollView.contentOffset = CGPointMake(0, scrollView.contentSize.height/2); 
    } 
} 
相關問題