- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个在应用程序启动时可以正常工作的表格 View 。当我切换应用程序语言并点击日历文本时,它会调用委托(delegate)方法来过滤数据,设置标志并重新加载表格 View 。在 TableView 委托(delegate)方法中,我检查标志并从适当的数组中获取数据。语言切换后数组返回 1,但随后返回 cellforRowAt indexPath
方法没有被调用。
extension CalendarViewController: UITableViewDataSource, UITableViewDelegate {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if (isFilterActive) {
return filteredData.count // returns 1 but cellForRowAt is not getting called
}
return data.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "calendarCell") as! CalendarCell
cell.delegate = self
// ...
}
}
extension CalendarViewController: CalendarViewDelegate {
func filterEvent(for date: Date) {
isFilterActive = true
var i = 0
filteredData = []
filteredImagesData = [:]
for (idx, val) in data.enumerated() {
var fromDate: Date?
var toDate: Date?
// ..
filteredData.append(val)
i = i + 1
}
}
DispatchQueue.main.async {
self.eventTableView.reloadData() // <-- filters and calls reload
}
}
}
DateViewControllerClass which displays
JTAppleCalendarView` 是
class DateViewController: UIViewController {
let delegate = JSDelegate.shared
weak var calendarVCDelegate: CalendarViewDelegate?
@IBOutlet weak var calendarView: JTAppleCalendarView!
override func viewDidLoad() {
calendarVCDelegate = self.delegate.getCalendarViewDelegate()
// ...
}
// ...
}
extension DateViewController: JTAppleCalendarViewDelegate, JTAppleCalendarViewDataSource {
func calendar(_ calendar: JTAppleCalendarView, didSelectDate date: Date, cell: JTAppleCell?, cellState: CellState) {
guard let dateCell = cell as? DateCell else { return }
if (cellState.dateBelongsTo == .thisMonth) {
dateCell.dateLabel.textColor = UIColor.white
dateCell.selectedView.isHidden = false
}
self.calendarVCDelegate!.filterEvent(for: date) // <- calls delegate method on date cell tap
}
}
我已经电汇delegate
和 datasource
在 Storyboard中。我有其他过滤器,如果我在语言切换之前选择它们,只有这样表重新加载才起作用。如何解决这个问题?
最佳答案
看起来 tableview 左右有一个不同的对象。不是很清楚。我用下面的方法解决了。
而不是打电话self.eventTableView.reloadData()
在扩展方法中,我发布了一条通知 NotificationCenter.default.post(name: Constants.AppNotification.EventTableViewShouldReload, object: self)
。观察者添加到 viewDidLoad()
作为NotificationCenter.default.addObserver(forName: Constants.AppNotification.EventTableViewShouldReload, object: nil, queue: nil, using: eventTableViewShouldReload)
使用方法:
@objc func eventTableViewShouldReload(notif: Notification) {
print("reload data notif \(CalendarModel.filteredData.count)")
CalendarModel.isFilterActive = true
self.eventTableView.reloadData()
}
我创建了一个数据模型类来保存静态变量,没有它变量就会被清除。
struct CalendarModel {
static var data:[[String:Any]] = []
static var filteredData:[[String:Any]] = []
static var imagesData:[Int:UIImage] = [:]
static var filteredImagesData:[Int:UIImage] = [:]
static var isFilterActive = false
}
现在,当 TableView 重新加载时,它可以正常工作。没有 CalendarModel
静态变量,我得到以下日志
reload data notif 1
numberOfRowsInSection 1
reload data notif 0 <-- called twice
numberOfRowsInSection 0 <-- second one, the filteredData.count is getting 0
cellForRowAt
configureCell
关于ios - iOS 中语言切换后未调用 Tableview cellForRowAt indexPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54664442/
最近想根据indexPaths删除单元格,所以函数的入参是[IndexPath]类型,需要根据把[IndexPath]拆分成几个数组indexPath.section,有什么简单的方法吗?例如 ind
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我有一个 TableViewController,其中包含使用 CoreData 的数据条目列表。我还有带 TextView 的 ViewController。我已经完成了对项目的添加、保存和删除等操
我正在编写一个 UICollectionViewLayout 子类。 我知道 Collection View 有多少个部分...numberOfSections。 我知道每个部分有多少项目...num
这是我的 collectionViewCell 图像。 我在 tableViewCell 中有 collectionView 并且在 collectionViewCell 中有一个按钮,它完全符合我的
这个问题在这里已经有了答案: Passing data between view controllers (45 个答案) 关闭 3 年前。 我在 UIViewController 中定义它并尝试在
我在我正在开发的应用程序中的表格单元格上设置长按手势时遇到了一些问题。我已经尝试了三种不同的配置,但还没有一种能够成功运行。 场景 1) 我将 UILongPressGestureRecognizer
在我更新到 Xcode 7.2 后,弹出一个错误提示“下标的使用不明确”: func tableView(tableView: UITableView, cellForRowAtIndexPath i
我在 UITaleViewCell 中有一个 UIImageView,我向 UIImageView 添加了一个点击识别器。 - (IBAction)ui_tapped:(UITapGestureRec
我正在尝试追踪应用程序中的严重崩溃。 我有一些代码可以有效地做到这一点: if let indexPath = self.tableView.indexPath(for: myTableViewCel
我有一个 UITableView,一个自定义单元格的自定义类和我的 ViewController swift: private var model_firma = [Firme]() var firm
我有一个 Tableview,显示一个包含 7 行的部分,我想要做的是,当我按第 0 行时,我将其发送到另一个 View ,表中的所有信息都是通过使用修复的代码加载的,我的问题是如何在“prepare
我注意到要禁用表格单元格的突出显示功能,您可以使用以下方法: override func tableView(tableView: UITableView, didSelectRowAtIndexPa
这个问题在这里已经有了答案: Issue Detecting Button cellForRowAt (3 个答案) 关闭 2 年前。 使用此代码,我只获得具有 indexpath.row 如何从中
我正在开发一个待办事项应用程序。在我的应用程序中,我按下复选框按钮来删除一行。我编写这段代码是为了将 indexPath.row 传递到我的复选框按钮中: cell.checkbox.tag = in
我有一个像这样的UIViewController: class ViewController { override func viewDidLoad() { super.vie
不知道你有没有遇到过这种情况,我用的是该函数 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPa
UITableViewController 的 numberOfSection 和 numberOfRowsInSection 被调用,但 cellForRow 没有。可能是什么原因 ?下面是 tab
我是 Stack Overflow 的新手,所以请保持温柔! 我正在设计一个应用程序,它从 firebase 检索对象并在 firebase 中显示它们。 我在这里配置firebase: func a
我手头有一个非常原始的问题,那就是当我将点击手势识别器添加到我的自定义单元格时,我无法调用 didSelectRowAt 方法。 我的代码如下: import UIKit class Language
我是一名优秀的程序员,十分优秀!