如何从 UITableView 获取行索引,其中数组列表由追加到类

     2023-03-08     265

关键词:

【中文标题】如何从 UITableView 获取行索引,其中数组列表由追加到类【英文标题】:How to get row index from UITableView which the array list made by append to a class 【发布时间】:2019-07-03 18:49:54 【问题描述】:

如何从 UITableView 中获取行索引,该数组列表由附加到对象类。 我想根据对象的值获取行索引,我需要滚动到我只知道对象的值但不知道行索引的行。

以下是创建数组并显示到 UITableView 的代码。

let paging: Int
let obj: Any
var currentAyaPlaying: Int?
var listArr = [] as [Any]


override func viewDidLoad() 
    super.viewDidLoad()

    tableView.estimatedRowHeight = 700
    tableView.rowHeight = UITableView.automaticDimension
    tableView.allowsSelection = true

    if paging == Paging.SURA 
        let sura = obj as! Sura
        listArr.append(Sura(sura.index, sura.start, sura.ayas, sura.type, sura.img, sura.name, sura.translate))
        for aya in 1...sura.ayas 
            listArr.append(Mark(sura.index, aya))
        
     else if (paging == Paging.JUZ)
        let juz = obj as! Juz
        for suras in juz.sura_start...juz.sura_end 
            let sura = MetaData().mSuras[suras - 1]
            if juz.sura_start == suras 
                for aya in juz.aya_start...(juz.sura_end == suras ? juz.aya_end : sura.ayas) 
                    listArr.append(Mark(suras, aya))
                
             else if juz.sura_end == suras 
                listArr.append(Sura(sura.index, sura.start, sura.ayas, sura.type, sura.img, sura.name, sura.translate))
                for aya in 1...juz.aya_end 
                    listArr.append(Mark(suras, aya))
                
             else 
                listArr.append(Sura(sura.index, sura.start, sura.ayas, sura.type, sura.img, sura.name, sura.translate))
                for aya in 1...sura.ayas 
                    listArr.append(Mark(suras, aya))
                
            
        
    

    NotificationCenter.default.addObserver(self, selector: #selector(appearNotifAudioReload(_:)), name: NSNotification.Name(rawValue: NotifKey.actAudioReloadFromParentToChild), object: nil)


@objc func appearNotifAudioReload(_ notification: Notification) 
    guard let sura = notification.userInfo?["sura"] as? Int else  return 
    guard let aya = notification.userInfo?["aya"] as? Int else  return 
    print("sura: \(sura)")
    print("aya: \(aya)")
    self.currentAyaPlaying = aya
    if paging == Paging.SURA 
        let indexPath = NSIndexPath(row: self.currentAyaPlaying!, section: 0)
        tableView.scrollToRow(at: indexPath as IndexPath, at: .top, animated: true)
     else if paging == Paging.JUZ 
        let IStackInHere = Mark(sura, aya) // how to get the row index from this data?

        let indexPath = NSIndexPath(row: IStackInHere, section: 0)
        tableView.scrollToRow(at: indexPath as IndexPath, at: .top, animated: true)
    

    tableView.reloadData()


override func numberOfSections(in tableView: UITableView) -> Int 
    return 1


override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
    return listArr.count


override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
    if (listArr[indexPath.row] as? Sura) != nil 
        tableView.register(UINib(nibName: identifierAyaHeader, bundle: Bundle.main), forCellReuseIdentifier: identifierAyaHeader)
        let cell = tableView.dequeueReusableCell(withIdentifier: identifierAyaHeader, for: indexPath) as! AyaCellHeader
        let data = listArr[indexPath.row] as! Sura
        cell.configureWithData(data)
        return cell
    

    tableView.register(UINib(nibName: identifierAya, bundle: Bundle.main), forCellReuseIdentifier: identifierAya)
    let cell = tableView.dequeueReusableCell(withIdentifier: identifierAya, for: indexPath) as! AyaCell
    let data = listArr[indexPath.row] as! Mark
    cell.configureWithData(data)

    return cell


override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 
    if (listArr[indexPath.row] as? Mark) != nil 
        tableView.deselectRow(at: indexPath, animated: false)
        let mark = listArr[indexPath.row] as! Mark
        showActionBottom(mark: mark)
    

我想在 func 中出现 paging == Paging.JUZ 的情况下获取它NotifAudioReload,我只是尝试通过以下方式获取它:

let index = listArr.firstIndex$0 === Mark(sura, aya)

但没有幸运和错误

“二元运算符'==='不能应用于'Any'类型的操作数和 '标记'"

我知道这个论坛不是为了解决我的编码问题,但现在我真的很困扰。

提前致谢。

【问题讨论】:

你说你收到一个错误。你能告诉我们错误是什么意思吗? "但没有幸运和错误" 另外,你能发布Mark类/结构的代码吗? 嗨@Rengers,马克是结构。 嗨@Rengers:代码行中的错误是“二元运算符'==='不能应用于'Any'和'Mark'类型的操作数” 【参考方案1】:

您需要使用==(等号)来比较相等性。假设 Mark 结构符合 Equatable,您可以使用以下内容:

let index = listArr.firstIndex  $0 as! Mark == Mark(sura, aya) 

【讨论】:

您好,现在的错误是:“二元运算符 '==' 不能应用于两个 'Mark' 操作数”

从 NSArray 为 UITableView 创建索引

】从NSArray为UITableView创建索引【英文标题】:CreateindexforUITableViewfromanNSArray【发布时间】:2011-08-2309:23:09【问题描述】:我读过创建索引(uitableview旁边的a-z)的最佳方法是设置一个nsdictionaries数组,其中每个字典对应一个部分,... 查看详情

如何根据uitableview中的部分获取索引路径?

】如何根据uitableview中的部分获取索引路径?【英文标题】:Howtogettheindexpathbasedonsectionsinuitableview?【发布时间】:2016-04-2007:04:41【问题描述】:您好,我正在使用Tableview我面临一个问题。当我像下面这样获取我的数组时,我的表... 查看详情

尝试从 iOS 中 UITableView 的自定义单元格内的 textField 获取活动单元格的索引

】尝试从iOS中UITableView的自定义单元格内的textField获取活动单元格的索引【英文标题】:TryingtogetindexofactivecellfromtextFieldinsidecustomcellofUITableViewiniOS【发布时间】:2013-08-1514:46:07【问题描述】:我的应用程序中有一个UITableView,其... 查看详情

删除行 UITableView 索引问题

】删除行UITableView索引问题【英文标题】:deleterowUITableViewindexissue【发布时间】:2017-04-2907:00:06【问题描述】:我正在使用下面的代码删除我的表格视图中的一行。首先,我从数组中删除对象,然后使用以下代码从tableview中删除... 查看详情

Openpyxl如何按索引从工作表中获取行

】Openpyxl如何按索引从工作表中获取行【英文标题】:OpenpyxlHowtogetrowfromworksheetbyindex【发布时间】:2017-03-2611:48:45【问题描述】:使用Openpyxl和python3.5,我尝试使用下标从excel工作表中获取第一行,但出现错误。#aftergettingfilename#af... 查看详情

如何从 SQL Server 中的表中获取行的索引?

】如何从SQLServer中的表中获取行的索引?【英文标题】:HowcanIgetrow\'sindexfromatableinSQLServer?【发布时间】:2013-11-1709:24:57【问题描述】:我有一个Toplist表,我想获得一个用户的排名。如何获取行的索引?不幸的是,我正在获取所... 查看详情

从 QTreeView 中的 QModelIndex 获取平面行索引

】从QTreeView中的QModelIndex获取平面行索引【英文标题】:GetflatrowindexfromQModelIndexinQTreeView【发布时间】:2018-12-0710:04:02【问题描述】:我有一个分层的Qtreeview结构视图和模型,其中包含多个带有子行的行,方式如下:Index(index.row()... 查看详情

从 UITableView 中删除所有行

】从UITableView中删除所有行【英文标题】:DeletingallrowsfromUITableView【发布时间】:2015-08-0413:20:24【问题描述】:我一直遇到断言失败,但我不知道如何解决。最初我做了一个概念验证应用程序来了解它的功能并在其中包含以下代... 查看详情

从 tableviewcell 获取单元格索引

...种原因,我无法检索索引,或者它不去functableView(tableView:UITableView,di 查看详情

如何提高获取 UITableView 的索引部分的性能

】如何提高获取UITableView的索引部分的性能【英文标题】:HowcanIimprovetheperformanceforobtainingindexedsectionsforUITableView【发布时间】:2013-04-1516:51:32【问题描述】:我正在为表格视图创建索引部分,以显示iPod库中的歌曲标题。为此,我... 查看详情

使用“插入”行初始化 UITableView

】使用“插入”行初始化UITableView【英文标题】:InitializingaUITableViewwith"inserted"Rows【发布时间】:2013-01-2707:53:39【问题描述】:我有一个UITableView,我想在其中插入和删除行。如果我有一个包含10个值的数组并从包含所有... 查看详情

获取 UITableView 中的第一行,其中未知数量的第一部分为空

】获取UITableView中的第一行,其中未知数量的第一部分为空【英文标题】:GetfirstrowinUITableViewwhereunknownnumberoffirstsectionsareempty【发布时间】:2016-09-1523:09:43【问题描述】:在这些条件下,我需要tableview中第一行的索引路径:第一... 查看详情

如何在 SwiftUI 列表中获取行索引?

】如何在SwiftUI列表中获取行索引?【英文标题】:HowtogetrowindexinSwiftUIList?【发布时间】:2019-09-0813:07:41【问题描述】:我想要一个编号列表,其中每一行都有一个数字。类似的东西但我在List初始化程序中没有看到正确的API此时... 查看详情

如何从 DataTable 对象中知道行索引

】如何从DataTable对象中知道行索引【英文标题】:HowtoknowtherowindexfromDataTableobject【发布时间】:2011-05-3008:38:33【问题描述】:我从DataGridView获取一个值,并且基于特定我想知道它使用DataTable对象的行索引。例如,如果我得到值“... 查看详情

如何使用 Swift3 在​​第二个 UITableView 中获取第一个 UITableView 的索引 path.row

】如何使用Swift3在​​第二个UITableView中获取第一个UITableView的索引path.row【英文标题】:HowcanIgettheindexpath.rowoffirstUITableViewintheSecondUITableViewusingSwift3【发布时间】:2017-01-0412:17:41【问题描述】:我有两个UITableViews。第一个UITableVie... 查看详情

从 MySQL 数据库中获取插入行的索引

...要获取它刚刚收到的索引。我该怎么做?【问题讨论】:如何利用这个索引来更快地搜索laster?@David:你是 查看详情

如何从 UIButton 操作方法获取 UITableViewCell 对象?

】如何从UIButton操作方法获取UITableViewCell对象?【英文标题】:HowcanIgetUITableViewCellobjectfromaUIButtonactionmethod?【发布时间】:2012-07-2612:47:17【问题描述】:我有一个UITableView,我在其中添加了一个UIButton作为每个单元格的附件视图。... 查看详情

从 DataFrame 行获取行索引

】从DataFrame行获取行索引【英文标题】:GetrowindexfromDataFramerow【发布时间】:2016-05-1606:25:37【问题描述】:是否可以在不添加包含行号的额外行的情况下获取DataFrame行的行号(即“索引值的序号位置”)(索引可以是任意的,即... 查看详情