2015-02-27 4 views
0

Я создаю UIDatePicker за пределами экрана и при нажатии кнопки я хочу, чтобы он скользил по экрану (снизу). Чтобы дать ему достаточно места, я хочу, чтобы UITableView (внутри UITableViewController) сокращался по оси y.Shrink UITableView -> Черный фон

Это вид работ, но сокращение UITableView показывает черный фон, так что UIDatePicker не отображается. Как я могу это исправить?

Это выглядит следующим образом:

enter image description here

import UIKit 

class jSONTableViewController: UITableViewController { 



    @IBAction func viewDatePicker(sender: UIButton) { 
     // Create DatePicker 
     let datePicker = UIDatePicker() 
     datePicker.center.y = self.view.bounds.height+100 
     datePicker.backgroundColor = UIColor.whiteColor() 
     datePicker.datePickerMode = UIDatePickerMode.Date 
     self.view.insertSubview(datePicker, aboveSubview: self.view) 



     // Animate View 
     UIView.animateWithDuration(0.5, delay: 0, options: .CurveEaseInOut, animations: {() -> Void in 
      let heightOfDatepicker = datePicker.frame.height 
      datePicker.center.y = self.view.frame.height-(heightOfDatepicker) 
      self.tableView.frame = CGRectMake(self.tableView.frame.origin.x, self.tableView.frame.origin.x, self.tableView.frame.size.width, self.tableView.frame.height-heightOfDatepicker) 

     }, completion: nil) 


    } 






    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Uncomment the following line to preserve selection between presentations 
     // self.clearsSelectionOnViewWillAppear = false 

     // Uncomment the following line to display an Edit button in the navigation bar for this view controller. 
     // self.navigationItem.rightBarButtonItem = self.editButtonItem() 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
} 
+0

Для этого вы должны использовать UIViewController, чтобы представление таблицы и средство выбора даты являлись подзонами для self.view контроллера. В UITableViewController представление таблицы представляет собой self.view контроллера. – rdelmar

+0

Вы должны менять 'contentInsets' вашего вида таблицы вместо того, чтобы изменять его размер. –

ответ

0

Вы используете UITableViewController где супер вид является представление таблицы. Поэтому, когда вы изменяете размер табличного представления, вы также просматриваете супер-представление, которое показывает фон окна.

Вы можете создать UIViewController и добавить представление таблицы в качестве подзаголовка, вам также необходимо будет соответствовать UITableViewDelegate и UITableViewDataSource.

0

Я думаю, что лучше всего использовать первый ответчик, чтобы поднять сборщик снизу. Большая часть всего этого делается для вас, вам просто нужно сделать проводку. Это дает вам эквивалент того, как работает клавиатура, но с вашим выбором и дополнительными кнопками.

Обсуждение здесь сегодня о том, как лучше всего это сделать: Add buttons to UIPickerView - Swift 1.2

Это какой-то быстры код возможно, вы можете просто поднять и использовать.

Смежные вопросы