另一个Swift初学者。我只是想在每个TableView单元格中使用一个步进器,以在同一单元格中增加标签。
我已经找到了有关此主题的几个问题,但是它们包含其他元素,因此我无法提取基本概念。
到目前为止,我已经为单元格类中的Label和Stepper连接了IBOutlets,并为Stepper连接了IBAction。
class BuyStatsCell: UITableViewCell{
//these are working fine
@IBOutlet weak var category: UILabel!
@IBOutlet weak var average: UILabel!
@IBOutlet weak var price: UILabel!
//Outlet for Label and Stepper - How do I make these work?
@IBOutlet weak var purchaseAmount: UILabel!
@IBOutlet weak var addSubtract: UIStepper!
//Action for Stepper - And this?
@IBAction func stepperAction(_ sender: UIStepper) {
self.purchaseAmount.text = Int(sender.value).description
}
}
而且我了解在cellForRowAt indexPath中重用单元格的概念
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "BuyStatsTabCell", for: indexPath) as! BuyStatsCell
cell.isUserInteractionEnabled = false
//these are working
cell.category.text = categories[indexPath.row]
cell.price.text = String(prices[indexPath.row])
cell.average.text = String(averages[indexPath.row])
//but is there something I need to add here to keep the correct Stepper and Label for each class?
return cell
}
已经问到的一个问题包括协议和ViewController中的另一个函数,如下所示
protocol ReviewCellDelegate{
func stepperButton(sender: ReviewTableViewCell)
}
func stepperButton(sender: ReviewTableViewCell) {
if let indexPath = tableView.indexPathForCell(sender){
print(indexPath)
}
}
我不知道这是否是我应该尝试的方法。我正在寻找最简单的解决方案,但是我很难将各个部分放在一起。
任何帮助表示赞赏。谢谢。
最简单的解决方案(简化):
创建一个BuyStat
具有属性的模型purchaseAmount
(成为一个类至关重要)。
强烈建议您不要使用多个数组作为数据源
class BuyStat {
var purchaseAmount = 0.0
init(purchaseAmount : Double) {
self.purchaseAmount = purchaseAmount
}
}
在视图控制器中创建一个数据源数组
var stats = [BuyStat]()
在viewDidLoad
创建一些实例并重新加载表视图
stats = [BuyStat(purchaseAmount: 12.0), BuyStat(purchaseAmount: 20.0)]
tableView.reloadData()
在自定义单元格中创建一个属性buyStat
,以使用观察者来保存当前数据源项,以在buyStat
设置时更新步进器和标签
class BuyStatsCell: UITableViewCell {
@IBOutlet weak var purchaseAmount: UILabel!
@IBOutlet weak var addSubtract: UIStepper!
var buyStat : BuyStat! {
didSet {
addSubtract.value = buyStat.purchaseAmount
purchaseAmount.text = String(buyStat.purchaseAmount)
}
}
@IBAction func stepperAction(_ sender: UIStepper) {
buyStat.purchaseAmount = sender.value
self.purchaseAmount.text = String(sender.value)
}
}
在cellForRowAtIndexPath
获取数据源项并将其传递到单元格
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "BuyStatsTabCell", for: indexPath) as! BuyStatsCell
cell.buyStat = stats[indexPath.row]
return cell
}
魔术是 :当您点击步进器时,标签以及数据源阵列将被更新。因此,即使在滚动之后,单元格也将始终获得实际数据。
这样,您就不需要协议或回调闭包。只有模型是具有引用类型语义的类才是重要的。
我一直试图通过UIViewController将tableviewcell链接到UIView中的tableview。虽然tableview在那里,但我的自定义tableviewcell没有加载。日志显示单元格已初始化并填充 下面是我在viewcontroller中使用的代码,而tableview已经在UIView中设置好了 ViewController.m
问题内容: 如何在Swift中的tableView单元中以编程方式嵌入?我就是那样做 问题答案: 这是您可以在单元格上嵌入的方法。 这是切换调用贝克方法 @LeoDabus 。 注意:如果您可能有多个,则应创建一个CustomCell子类并配置您的内部 方法而不是表视图方法。当将可重用的队列释放出队列时,将其投射到您的CustomCell中这是@LeoDabus的示例
问题内容: 如何在我的表格视图中重新加载单元格的数据?我想向我的服务器发出请求,并且服务器响应JSON。目前,我实现了请求和响应处理,并且可以在单元格中显示数据。但是我希望服务器仅响应十个数据集。当我滚动到带有应用程序中十个单元格的表格视图的末尾时,我想向服务器发出下一个请求,服务器将提供接下来的十个数据集,依此类推。我使用Swift作为编程语言。 谢谢! 问题答案: 您可以使用以便重新加载整个表
我开发了一个应用程序。我在那份申请中有一个问题 我想将scrollview添加到tableview单元格中。我使用下面的代码创建了tableview单元格。 这里是我的自定义单元格类 在现有casescustomcell的init方法中,我添加了滚动视图,其中子视图为4个按钮(buttonEdit、buttonShare、ButtonAnd和buttonDelete)。最初,scrollview处
有没有办法增加公式中单元格引用中的列值?举个例子,在伪代码中,类似于=CELL(Row,Column Month(“”),因此,在一月,公式将引用A21、二月A22、三月A23等等。提前谢谢!
我有一个tableView在几个ColltionView单元格中。每个tableView占据了单元格的全部大小。ColltionView是水平滑动的。 收藏视图: 集合视图单元格内的表视图: tableView将重新加载到CollectionView的cellForItemAt下,并具有自定义单元格。自定义tableView单元格包含几个小视图,这些视图被添加到名为“cellView”的单个视图中