gpt4 book ai didi

ios - 为什么我的 datePicker 没有显示?

转载 作者:行者123 更新时间:2023-11-29 01:28:32 26 4
gpt4 key购买 nike

我有一个基本设置,当文本字段出现时,datePicker 就会出现。我在表中有多个元素应该显示 datePicker。我知道代码有效,因为我创建了一个完美运行的 View 。我也是 swift 的新手。我相信它可能会出现在我的表格 View 后面。我将如何测试/修复它?这是我的 datePicker 的编码位置:

import UIKit

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UIPickerViewDelegate, UIPickerViewDataSource, UITextFieldDelegate {

@IBOutlet weak var tableView: UITableView!
@IBOutlet var coursePicker: UIPickerView!
@IBOutlet var courseTextfield: UITextField!
@IBOutlet var playerPicker: UIPickerView!
@IBOutlet var playerTextfield: UITextField!
@IBOutlet var timePicker: UIPickerView!
@IBOutlet var timeTextfield: UITextField!
@IBOutlet weak var dateTextfield: UITextField!

@IBAction func unwindToVC(segue: UIStoryboardSegue) {
if(segue.sourceViewController.isKindOfClass(ConViewController)) {
let viewCon:ConViewController = (segue.sourceViewController as? ConViewController)!
lblOneData[tblIndex] = viewCon.pOneTextfield.text!
lblTwoData[tblIndex] = viewCon.pTwoTextfield.text!
lblThreeData[tblIndex] = viewCon.pThreeTextfield.text!
lblFourData[tblIndex] = viewCon.pFourTextfield.text!
tableView.reloadData()
}
}

var tableData: [String] = ["8:00 am", "8:10 am", "8:20 am", "8:30 am", "8:40 am", "8:50 am", "9:00 am", "9:10 am", "9:20 am", "9:30 am", "9:40 am", "9:50 am", "10:00 am", "10:10 am", "10:20 am", "10:30 am", "10:40 am", "10:50 am", "11:00 am", "11:10 am", "11:20 am", "11:30 am", "11:40 am", "11:50 am", "12:00 pm", "12:10 pm", "12:20 pm", "12:30 pm", "12:40 pm", "12:50 pm", "1:00 pm", "1:10 pm", "1:20 pm", "1:30 pm", "1:40 pm", "1:50 pm", "2:00 pm", "2:10 pm", "2:20 pm", "2:30 pm", "2:40 pm", "2:50 pm", "3:00 pm", "3:10 pm", "3:20 pm", "3:30 pm", "3:40 pm", "3:50 pm", "4:00 pm", "4:10 pm", "4:20 pm", "4:30 pm", "4:40 pm", "4:50 pm", "5:00 pm"]
var courseData = ["Norman Course", "Riding Golf", "Dmob Course", "Brambleton", "Leesburg Clubhouse"]
var playersData = ["View All", "1 Available", "2 Available", "3 Available", "4 Available"]
var timeData = ["All Day", "Morning", "Afternoon"]
var lblOneData = ["Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available"]
var lblTwoData = ["Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available"]
var lblThreeData = ["Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available"]
var lblFourData = ["Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available","Available", "Available","Available","Available"]

let conSegueIdentifier = "ShowConSegue"
var timeToPass:String!
var availableIndexes = [Int]()
var tblIndex:Int!
var datePicker = UIDatePicker()

override func viewDidLoad() {
super.viewDidLoad()

let nib = UINib(nibName: "vwTblCell", bundle: nil)
tableView.registerNib(nib, forCellReuseIdentifier: "cell")

coursePicker.hidden = true
self.courseTextfield.delegate = self

playerPicker.hidden = true;
self.playerTextfield.delegate = self

timePicker.hidden = true;
self.timeTextfield.delegate = self

setupDatePicker()
}

func setupDatePicker() {
dateTextfield.text = "Date"
dateTextfield.textAlignment = .Center
dateTextfield.tintColor = UIColor.clearColor()
datePicker.datePickerMode = .Date

let toolBar = UIToolbar()
toolBar.barStyle = .Default
toolBar.translucent = true
toolBar.tintColor = UIColor(red: 92/255, green: 216/255, blue: 255/255, alpha: 1)
toolBar.sizeToFit()

let doneButton = UIBarButtonItem(title: "Done", style: .Plain, target: self, action: "doneClick")
let spaceButton = UIBarButtonItem(barButtonSystemItem: .FlexibleSpace, target: nil, action: nil)
let cancelButton = UIBarButtonItem(title: "Cancel", style: .Plain, target: self, action: "cancelClick")
toolBar.setItems([cancelButton, spaceButton, doneButton], animated: false)
toolBar.userInteractionEnabled = true

// Adds the toolbar to the view
dateTextfield.inputView = datePicker
dateTextfield.inputAccessoryView = toolBar
}
func doneClick() {
let dateFormatter = NSDateFormatter()
dateFormatter.dateStyle = .ShortStyle
dateTextfield.text = dateFormatter.stringFromDate(datePicker.date)
dateTextfield.resignFirstResponder()
}
func cancelClick() {
dateTextfield.resignFirstResponder()
}

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

//tableview

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
var numRows = tableData.count
if(timeTextfield.text == timeData[1]) {
numRows = 25
}
else if(timeTextfield.text == timeData[2]) {
numRows = 30
}
return numRows
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

let cell:TblCell = self.tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! TblCell
var lblOneBool = true
var lblTwoBool = true
var lblThreeBool = true
var lblFourBool = true

if(timeTextfield.text == timeData[2]) {
cell.hidden = false
cell.lblTime.text = tableData[indexPath.row + 25]
cell.lblOne.text = lblOneData[indexPath.row + 25]
cell.lblTwo.text = lblTwoData[indexPath.row + 25]
cell.lblThree.text = lblThreeData[indexPath.row + 25]
cell.lblFour.text = lblFourData[indexPath.row + 25]

}
else {
cell.lblTime.text = tableData[indexPath.row]
cell.lblOne.text = lblOneData[indexPath.row]
cell.lblTwo.text = lblTwoData[indexPath.row]
cell.lblThree.text = lblThreeData[indexPath.row]
cell.lblFour.text = lblFourData[indexPath.row]
}

if(cell.lblOne.text != "Available") {
lblOneBool = false
}
if(cell.lblTwo.text != "Available") {
lblTwoBool = false
}
if(cell.lblThree.text != "Available") {
lblThreeBool = false
}
if(cell.lblFour.text != "Available") {
lblFourBool = false
}

if(playerTextfield.text == playersData[1]) {
if(lblOneBool || lblTwoBool || lblThreeBool || lblFourBool) {
cell.hidden = false
}
else {
cell.hidden = true
}
}
else if(playerTextfield.text == playersData[2]) {
if((lblOneBool && lblTwoBool) || (lblOneBool && lblThreeBool) || (lblOneBool && lblFourBool) || (lblTwoBool && lblThreeBool) || (lblTwoBool && lblFourBool) || (lblThreeBool && lblFourBool)) {
cell.hidden = false
}
else {
cell.hidden = true
}
}
else if(playerTextfield.text == playersData[3]) {
if((lblOneBool && lblTwoBool && lblThreeBool) || (lblOneBool && lblTwoBool && lblFourBool) || (lblOneBool && lblThreeBool && lblFourBool) || (lblTwoBool && lblThreeBool && lblFourBool)) {
cell.hidden = false
}
else {
cell.hidden = true
}
}
else if(playerTextfield.text == playersData[4]) {
if(lblOneBool && lblTwoBool && lblThreeBool && lblFourBool) {
cell.hidden = false
}
else {
cell.hidden = true
}
}


return cell
}

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 120
}

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

let row = indexPath.row

performSegueWithIdentifier(conSegueIdentifier, sender: indexPath)
print(tableData[row])
if(timeTextfield.text == timeData[2]) {
tblIndex = row + 25
}
else {
tblIndex = row
}
}

//end of tableview

//pickerViews

func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}

func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if(pickerView == coursePicker) {
return courseData.count
}
else if(pickerView == playerPicker) {
return playersData.count
}
else if(pickerView == timePicker) {
return timeData.count
}
return 0
}

func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if(pickerView == coursePicker) {
return courseData[row]
}
else if(pickerView == playerPicker) {
return playersData[row]
}
else if(pickerView == timePicker) {
return timeData[row]
}
return courseData[row]
}

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if(pickerView == coursePicker) {
courseTextfield.text = courseData[row]
coursePicker.hidden = true
}
else if(pickerView == playerPicker) {
playerTextfield.text = playersData[row]
playerPicker.hidden = true
tableView.reloadData()
}
else if(pickerView == timePicker) {
timeTextfield.text = timeData[row]
timePicker.hidden = true
tableView.reloadData()
}
}

func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
if(textField == courseTextfield) {
coursePicker.hidden = false
}
if(textField == playerTextfield) {
playerPicker.hidden = false
}
else if(textField == timeTextfield) {
timePicker.hidden = false
}
return false
}

//end of pickerViews

//segue
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == conSegueIdentifier {
let cvc = segue.destinationViewController as! ConViewController;
let indexPath: NSIndexPath = self.tableView.indexPathForSelectedRow!
let valueToPass:String

if(timeTextfield.text == timeData[2]){
tblIndex = indexPath.row + 25
valueToPass = tableData[indexPath.row + 25]
}
else {
tblIndex = indexPath.row
valueToPass = tableData[indexPath.row]
}
cvc.conName = courseTextfield.text
cvc.conDateName = dateTextfield.text
cvc.conTimeName = valueToPass
cvc.indexOfTbl = tblIndex
}
}

最佳答案

我只是复制/粘贴了您在空白项目中编写的相同代码,然后它 works fine .所以我想主要问题不在我们的视野范围内,也许当您使用 UITableView 时。 您能向我们展示这个 View Controller 的其余代码吗,尤其是当您出队 TableView 单元格和正在初始化 dateTextfield

附言我还强烈建议您不要在每次需要时都创建新的NSDateFormatter实例,因为这样效率不高。最流行的(也是 Apple 开发人员推荐的)做法是使用单例和惰性初始化器来缓存 NSDateFormatter。 StackOverflow 有一个 really good topic

关于ios - 为什么我的 datePicker 没有显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33745374/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com