Я уже реализовал PickerView, но я хочу настроить его как приложение Alarm Clock.Custom PickerView iOS
Вы можете видеть, что каждый компонент имеет ряд «Час» или «Минута». Я хочу установить «Час» и «Минут», чтобы стоять здесь, и каждый элемент, который не выбран, у них нет «Часа» или «Минуты», только тот, который выбран, имеет «Час» или «Минуту», , Как это сделать?
Вот мой код:
import UIKit
class StoryAddViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
@IBOutlet var titleTextField: TextField!
@IBOutlet var hashtagsTextField: TextField!
@IBOutlet var createButton: UIButton!
@IBOutlet var timePickerView: UIPickerView!
var timePickerDataBase = [ ["1", "2" , "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"], ["1", "2" , "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26" , "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59"] ]
var hour = String()
var minute = String()
var story: Story?
override func viewDidLoad() {
super.viewDidLoad()
title = "Add new story"
view.backgroundColor = Colors.primaryBackgroundColor
(tabBarController as! SLTabBarController).toggleTabBar(animated: false, showed: false)
createButton.backgroundColor = Colors.tintColor
createButton.tintColor = UIColor.whiteColor()
}
override func viewWillAppear(animated: Bool) {
if story == nil {
story = Story.create(getDatabase())
}
titleTextField.text = story?.title
hashtagsTextField.text = story?.hashtags.joinWithSeparator(", ")
super.viewWillAppear(animated)
}
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated)
(tabBarController as! SLTabBarController).toggleTabBar(animated: true, showed: true)
}
@IBAction func handleViewTap(sender: AnyObject) {
view.endEditing(true)
}
@IBAction func handleCreateButtonTap(sender: UIButton) {
story?.title = titleTextField.text!
story?.hashtags = hashtagsTextField.text!.split("\\s*,\\s*")
try! story?.save()
navigationController?.popViewControllerAnimated(true)
}
// MARK: handle picker view
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return timePickerDataBase.count
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return timePickerDataBase[component].count
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return timePickerDataBase[component][row]
}
func pickerView(pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusingView view: UIView?) -> UIView {
let pickerLabel = UILabel()
pickerLabel.textColor = UIColor.blueColor()
if component == 0 {
pickerLabel.text = timePickerDataBase[component][row] + " Hour"
pickerLabel.font = UIFont(name: "Arial-BoldMT", size: 25)
pickerLabel.textAlignment = NSTextAlignment.Center
} else {
pickerLabel.text = timePickerDataBase[component][row] + " Minute "
pickerLabel.font = UIFont(name: "Arial-BoldMT", size: 25)
pickerLabel.textAlignment = NSTextAlignment.Center
}
return pickerLabel
}
func pickerView(pickerView: UIPickerView, widthForComponent component: Int) -> CGFloat {
return 140
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
print(component)
print(row)
switch component {
case 0:
hour = timePickerDataBase[component][row]
print(hour)
case 1:
hour = timePickerDataBase[component][row]
print(minute)
default:
break
}
}
}
Вы пытаетесь сказать, что только выбранное значение должно иметь «часы» и «минуты», а все остальные должны иметь только цифры? Если это так, я предлагаю вам сделать это по-другому, потому что обновление значений, пока оно вращается, не будет работать очень хорошо. – lzl
Да, я имею в виду это. – Khuong
Если вы хотите динамически обновлять значения, то проверьте мой ответ. В противном случае я бы предложил иметь один сборщик, затем метку «часы», затем еще одну метку и метку «минут» .... или, имеют первые и значения по умолчанию, такие как 0H: 0M, тогда остальные просто цифры – lzl