- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有几个常见的“表格 View ”,其单元格具有相同的名称:"LiveViewCell"
,我想重新加载 view controller
中创建的数据。只剩下一个view controller
得到 reloadData()
调用 notification
,甚至当前发送数据的人也无法获取到它。
这是我在所有 View Controller 中实现的代码:
@IBOutlet weak var tableViewLiveCells: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(self.reloadLive),name:NSNotification.Name(rawValue: "load"), object: nil)
}
func reloadLive(notification: NSNotification) {
tableViewLiveCells.reloadData()
}
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return NT.count
}
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableViewLiveCells.dequeueReusableCell(withIdentifier: "LiveViewCell", for: indexPath) as! LiveViewCell
let tab: Table!
tab = NT[indexPath.row]
cell.configureLiveCell(tab)
return cell
}
这是LiveViewCell.swift
文件
import UIKit
class LiveViewCell: UITableViewCell {
@IBOutlet weak var tableNumberLeftLabel: UILabel!
@IBOutlet weak var guestNumbersLabel: UILabel!
@IBOutlet weak var timeInTableLabel: UILabel!
@IBOutlet weak var tableNumberLbl: UILabel!
@IBOutlet weak var timeRemainingLbl: UILabel!
var table: Table!
func configureLiveCell(_ NT: Table) {
layer.cornerRadius = 20
tableNumberLbl.text = "T" + String(NT.number)
timeRemainingLbl.text = String(time)
}
func configureCell(_ NT: Table) {
tableNumberLeftLabel.text = "T" + String(NT.number)
guestNumbersLabel.text = "COVERS:" + String(NT.guests)
timeInTableLabel.text = "TIME IN:" + NT.timeIn
}
}
从创建要重新加载的数据的 viewController:
import UIKit
var NT = Table.MyTables.newTable
class NewTableVC: UIViewController {
@IBOutlet weak var tableViewLiveCells: UITableView!
@IBOutlet weak var imageTableCreated: UIImageView!
@IBOutlet weak var tableNumberTF: UITextField!
@IBOutlet weak var guestNumberTF: UITextField!
@IBOutlet weak var timeLabelTable: UILabel!
@IBOutlet weak var prebooked: UISwitch!
@IBOutlet weak var dateLabel: UILabel!
@IBAction func createButton(_ sender: AnyObject) {
print("createButton tapped")
let newNumber = Int(tableNumberTF.text!)
let newGuestNumber = Int(guestNumberTF.text!)
let currentTimeArrival:String? = timeLabelTable.text
if (tableNumberTF.text?.isEmpty)! || (guestNumberTF.text?.isEmpty)! {
let alert = UIAlertController(title: "Missing input(s)", message: "Please fill in all the gaps", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "Ok", style: .cancel, handler: nil))
alert.addAction(UIAlertAction(title: "Back Home", style: .default, handler: {(alert: UIAlertAction) in
self.dismiss(animated: true, completion: nil)
}))
self.present(alert, animated: true, completion: nil)
} else {
let presentTable = Table(number: newNumber!, guests: newGuestNumber!, timeIn: currentTimeArrival!)
NT.append(presentTable)
print("This is a new table with the following values")
print(presentTable.number)
print(presentTable.guests)
print(presentTable.timeIn)
print(NT.count)
imageTableCreated.alpha = 1
imageTableCreated.layer.zPosition = 500
tableViewLiveCells.reloadData()
let deadline = DispatchTime.now() + .seconds(1)
DispatchQueue.main.async {
NotificationCenter.default.post(name: NSNotification.Name(rawValue: "load"), object: nil)
}
DispatchQueue.main.asyncAfter(deadline: deadline) {
self.imageTableCreated.alpha = 0
self.imageTableCreated.layer.zPosition = -500
}
}
}
}
reloadData()
不适用于任何 viewController
除了上一个到此 NewTableVC
viewController
创建新数据,这是我在创建其他数据后创建的第一个数据。该问题是否与复制和粘贴相同内容有关tableViewLiveCells
到所有其他 View Controller ?如果是这样,我尝试重新创建表格 View ,但它不允许我再次连接标签。
最佳答案
在代码中设置断点并确保通知已发布,然后检查响应这些通知的每个 View 是否都能看到该通知。
您的通知设置正确,但当您的方法名称为 reloadLive
时,您一直指出 reloadData()
不适用于您的 View Controller 。我还会仔细检查所有 View 设置,它们在 viewDidLoad
中响应哪些通知,就像您在上面的第一个 View Controller 中一样,并且它们都有方法 reloadLive
,该方法将然后重新加载您的表格 View 。
如果上面的 NewTableVC 代码是该 View Controller 的完整代码,则该 View Controller 尚未添加来监听通知,也没有可调用的方法来响应通知。
关于swift - 使用相同的reuseidentifier重新加载各种 TableView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40309551/
想知道以下代码中 if (self = [super ... 的意义是什么?它试图防止什么情况发生? - (id)initWithFrame:(CGRect)frame reuseIdentifier
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier 上述构造函数中的
我正在尝试获取单元格的重用标识符,以便我可以像这样设置其高度: 但是出现错误: 我做错了什么? 最佳答案 tableView heightForRowAtIndexPath 在cellForRowAt
我创建了两个不同的单元格以在其中显示不同的数据。我为它们分配了 reuseIdentifier("TableCell" 和 "FixtureCell")。他们有两个不同的类,名为 FixtureTab
我已经为 UITableView 创建了一个扩展,并希望在运行时获得正确的 reuseIdentifier,但我不能: extension UITableView { func dequeueReus
我想使用 UITableviewCell 重用,我有一个自定义的 UITableViewCell 和使用 ARC,我的 UITableViewCell 是不同的。我的代码是: - (UITableV
你能帮我解决这个问题吗,因为方法 initWithFrame:reuseIdentifier 已被弃用: static NSString *CellIdentifier = @”Cell”; Cust
我试图重新创建一个 Xcode 项目,但我遇到了一个错误“'initWithFrame:reuseIdentifier' is deprecated”。这是代码: - (id)initWithFram
在我的项目中,我收到了弃用警告,initWithFrame : reuseIdentifier : is deprecated 我不知道这是什么意思,谁能告诉我如何解决这个警告谢谢 这是短代码 - (
我正在创建自己的自定义 UITableViewCell 以用作原型(prototype)单元格的后端。在我的类中,我重写了 initwithstyle:reuseIdentifier: 方法来执行一些
我现在考虑这个问题很长时间了。 我尝试在我的表格中使用不同类型的单元格,每个单元格都有自己的单元格 Controller ,并有一个重用标识符和来自 NIB 的负载。 问题归结为:您可以通过 [UIT
我有一个自定义的 UICollectionViewCell,我通过像这样注册它来将它从我的 View Controller 中取出 [self.calendarView registerNib:[UI
我有一个最多包含 50 个单元格的 TableView,其中包含 5 个包含公共(public)信息(标题、描述、价格...)的 subview 和 5 个可选 subview (报价、报价过期...
如果我尝试返回默认的 UICollectionViewCell 应用程序崩溃,因为它缺少 reuseIdentifier: Terminating app due to uncaught except
我有 SIGSEGV 的崩溃报告。我认为这真的不明显,因为有: 无后台 UI 操作。 没有外部 CALayer 操作。 UITableViewCell 以编程方式初始化,不使用 xib 或 Story
据我了解,如果不期望该单元格被重用,则创建一个 reuseIdentifier 为 nil 的 UITableViewCell 是有效的,例如当该类型的单元格只有一两行时。 前几天有人提出这是不正确的
我在 Swift 中使用一个 TableViewController 和一个原型(prototype)单元格。该单元有一个在 Storyboard 中指定的重用标识符,但它永远不会正确出列。我总是收到
表格 View 单元格的重用标识符的范围是什么——它们是在一个表格 View 实例中共享,还是在所有使用相同重用标识符的表格 View 中共享? 例如,我有一个 FooTableViewControl
我已阅读 Loren's article关于为 UITableViewCell 绘制您自己的内容。但是,他使用的是一种已弃用的方法:initWithFrame:reuseIdentifier: is
据我了解,似乎有三种布局自定义表格 View 单元格的方法: 在界面生成器中。 在 layoutSubviews . 在 initWithStyle:reuseIdentifier: . 第二种方法和
我是一名优秀的程序员,十分优秀!