gpt4 book ai didi

ios - 在 uitableviewcell 中自定义 uipickerview

转载 作者:行者123 更新时间:2023-11-29 00:52:50 25 4
gpt4 key购买 nike

我在 UITableViewCell 中有一个功能齐全的 UIPickerView,我想完成两件事。

UIPickerView 显示了 4 个组件,但很少提及第一个组件。因此,我希望 A(首选)让它显示 0 的空白并滚动到 1,或者 B 修改颜色,使 0 不那么显着。

其次,我想隐藏 UIPickerView 直到被选中。

我找到了这两个选项,但它们都位于 UIViewController 中,并且在 UITableViewCell 中不起作用。

import UIKit

class DiveDurationTableViewCell: UITableViewCell, UIPickerViewDelegate, UIPickerViewDataSource

{
@IBOutlet var textfieldBizCat: UITextField!
@IBOutlet var pickerBizCat: UIPickerView! = UIPickerView()


// ---------------------------------------------------------------------------------------------
// MARK: - Internal Constant

let numberOfComponents: Int = 4
let FirstDigitComponentRows: Int = 2
let SecondDigitComponentRows: Int = 10
let ThirdDigitComponentRows: Int = 10
let DisplayMinuteComponentRows: Int = 1

let Minutes: String = "Min"
let MinNumber = 0
let MaxNumber = 9


private var diveTime: Array<Int> = [Int]()

var FirstDigit: Int = 0
var SecondDigit: Int = 0
var ThirdDigit: Int = 0
var DisplayMinutes: String = "Min"


// ---------------------------------------------------------------------------------------------
// MARK: - IBOutlets

@IBOutlet var diveTimePicker: UIPickerView!


// ---------------------------------------------------------------------------------------------
// MARK: - UITableVieCell Methods


//
// Called when we are initialized from a storyboard or nib file.
//
override func awakeFromNib()
{
super.awakeFromNib()


//
// We create an array of integers from 0 to 9.
//

for i in self.MinNumber ..< self.MaxNumber+1
{
self.diveTime.append(i)
}

self.diveTimePicker.selectRow(0, inComponent: 0, animated: true)
self.diveTimePicker.selectRow(0, inComponent: 1, animated: true)
self.diveTimePicker.selectRow(0, inComponent: 2, animated: true)

}

//
// The item has been selected in the table.
//

override func setSelected(selected: Bool, animated: Bool)
{
super.setSelected(selected, animated: animated)
}



// ---------------------------------------------------------------------------------------------
// MARK: - UIPickerViewDataSource Methods


//
// Number of components in the picker.
//

func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int
{
return self.numberOfComponents
}

//
// Number of rows in each component.
//
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int
{
if component == 0
{
return self.FirstDigitComponentRows
} else if component == 1 {
return self.SecondDigitComponentRows
} else if component == 2 {
return self.ThirdDigitComponentRows
} else {
return self.DisplayMinuteComponentRows
}
}

func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?
{

if component == 0
{
return String(self.diveTime[row])
}
if component == 1
{
return String(self.diveTime[row])
}
if component == 2
{
return String(self.diveTime[row])
}

else
{
return self.DisplayMinutes
}
}


//
// The user has selected in item in the picker view.
//
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
{
}
}

更新:我不是在问如何创建选择器 View ,因为上面的代码效果很好。我只是问如何定制它以使其更具吸引力。

最佳答案

UITableView 是 UIScrollview 的子类,而 UIPicker 也是 scrollview,你需要处理很多事情才能让它们一起工作。第一件事是当您使用 Picker 在 UITableview 单元格上滚动时,第一个响应是哪个?如果 Picker 是第一个响应,并且 picker 的尺寸太大,比如设备屏幕大,你将无法再滚动 table view。如果 tableview 是第一个响应,则不能滚动 Picker,因为 table view 会滚动。我建议您将 Picker View 作为 tableview/controller.view 的 subview 添加到您之前要添加 Picker 的单元格的位置/框架,尝试在 tableview 单元格中伪装成 Picker。

关于ios - 在 uitableviewcell 中自定义 uipickerview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37935540/

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