首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何实现两个xib单元和单个单元。数组计数为零,显示为空,否则显示为数据单元格

要实现两个xib单元和单个单元,并在数组计数为零时显示为空,否则显示数据单元格,你可以按照以下步骤进行:

基础概念

  1. XIB(XML Interface Builder):XIB是一种用于描述用户界面文件格式,它允许开发者使用Interface Builder工具来设计用户界面。
  2. UITableView:UITableView是iOS开发中用于展示列表数据的控件,它通过数据源(DataSource)和代理(Delegate)来管理数据和交互。

实现步骤

  1. 创建XIB文件
    • 创建两个XIB文件,分别用于显示空单元格和数据单元格。
    • 在这两个XIB文件中设计相应的界面。
  • 定义UITableViewCell子类
    • 为每个XIB文件创建一个对应的UITableViewCell子类。
  • 配置UITableView
    • 在你的ViewController中配置UITableView,并设置其数据源和代理。
  • 实现数据源方法
    • 实现tableView(_:numberOfRowsInSection:)方法来返回数组的计数。
    • 实现tableView(_:cellForRowAt:)方法来根据数组计数决定显示空单元格还是数据单元格。

示例代码

以下是一个简单的示例代码,展示了如何实现上述功能:

创建XIB文件

  1. 创建一个名为EmptyCell.xib的XIB文件,设计一个简单的空单元格界面。
  2. 创建一个名为DataCell.xib的XIB文件,设计一个包含数据展示的单元格界面。

定义UITableViewCell子类

代码语言:txt
复制
// EmptyCell.swift
import UIKit

class EmptyCell: UITableViewCell {
    override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
        loadNib()
    }
    
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        loadNib()
    }
    
    private func loadNib() {
        guard let view = Bundle.main.loadNibNamed("EmptyCell", owner: self, options: nil)?.first as? UIView else {
            return
        }
        view.frame = self.contentView.bounds
        self.contentView.addSubview(view)
    }
}

// DataCell.swift
import UIKit

class DataCell: UITableViewCell {
    @IBOutlet weak var dataLabel: UILabel!
    
    override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
        loadNib()
    }
    
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        loadNib()
    }
    
    private func loadNib() {
        guard let view = Bundle.main.loadNibNamed("DataCell", owner: self, options: nil)?.first as? UIView else {
            return
        }
        view.frame = self.contentView.bounds
        self.contentView.addSubview(view)
    }
}

配置UITableView

代码语言:txt
复制
import UIKit

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
    @IBOutlet weak var tableView: UITableView!
    
    var dataArray: [String] = [] // 示例数据数组
    
    override func viewDidLoad() {
        super.viewDidLoad()
        tableView.dataSource = self
        tableView.delegate = self
        tableView.register(EmptyCell.self, forCellReuseIdentifier: "EmptyCell")
        tableView.register(DataCell.self, forCellReuseIdentifier: "DataCell")
    }
    
    // MARK: - UITableViewDataSource
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return dataArray.count > 0 ? dataArray.count : 1
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        if dataArray.count == 0 {
            let cell = tableView.dequeueReusableCell(withIdentifier: "EmptyCell", for: indexPath) as! EmptyCell
            return cell
        } else {
            let cell = tableView.dequeueReusableCell(withIdentifier: "DataCell", for: indexPath) as! DataCell
            cell.dataLabel.text = dataArray[indexPath.row]
            return cell
        }
    }
}

应用场景

这种实现方式适用于需要在UITableView中根据数据数组的计数来动态显示不同类型单元格的场景。例如,当没有数据时显示一个提示信息,当有数据时显示具体的数据项。

可能遇到的问题及解决方法

  1. 数组计数为零时显示不正确
    • 确保在tableView(_:numberOfRowsInSection:)方法中正确返回数组的计数。
    • 确保在tableView(_:cellForRowAt:)方法中正确判断数组计数并返回相应的单元格。
  • XIB文件加载失败
    • 确保XIB文件的名称和路径正确。
    • 确保在loadNib方法中正确加载XIB文件。

通过以上步骤和示例代码,你应该能够实现两个XIB单元和单个单元,并在数组计数为零时显示为空,否则显示数据单元格。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

问题——持续更新

:在程序中怎么去实现 应用图标怎么添加 插件:  工程 一些方法为什么总是调用不到,如创建在视图控制器中创建单元格???   ...解决:调用方法时两个参数传的有问题,可能是反了,以至于出现了负数。 在表格协议的方法中  return  2  return  _apps.count 结果不同(表现在单元格的高度上)???...如何获取全屏图片用于上传   command+S 10.4 新加: ViewController添加导航控制器(xcode6中将自动设置根视图控制器)?...设置键盘的样式    :     textView.keyboardtype = UIKeyboardTypeNumberPad;     利用xib创建单元格之后的复用问题:     在xib中设置...Post 用系统自带的第三方库的区别   请求体???     答:系统中的请求体是一个拼接起来的字符串,第三方AF中的参数是一个字典. 如何查看即将输出的数据数据类型?

1.3K20

7道题,测测你的职场技能

当我们鼠标单击“显示值”列的任一单元格,在编辑栏里,我们可以看到其“内核”其实是输入值一致的。 例如,点击单元格C4,在编辑栏里会看到其实质输入值“猴子”是一致的。...所以,当输入类似“56”,却想显示“0056”的时候,可以在“设置单元格格式”对话框中,把数字格式代码修改为“0000”即可。当输入的数字比代码的数量少时,会显示无意义的值。...也就是说,如何使得多个不连续的空白单元格同时输入数据? 有人说,我输入其中一个单元格,然后复制到其他空白单元格不就可以了吗。...如本次案例中,我们是要定位出单元格,也就是“值”,因此选择“值”作为定位的条件。 “确定”之后,如下图,就批量选中了表里不连续的单元格。...Excel所支持的通配符包含有两个:星号“*”问号“?” *:可代替任意多个字符,可以是单个字符、多个字符或者没有字符。 ?:可代替任意单个字符。

3.6K11
  • iOS面试题梳理(三)

    (我们称之为弱引用). 2.retain:保留计数,获得到了对象的所有权,引用计数在原有基础上加1. 3copy:一般认为,是在内存中重新开辟了一个新的内存空间,用来 存储新的对象,原来的对象是两个不同的地址...解决cell重用的问题 UITableView通过重用单元格来达到节省内存的目的,通过为每个单元格指定一个重用标示(reuseidentifier),即指定了单元格的种类,以及当单元格滚出屏幕时,允许恢复单元格以便复用...如一个TableView中有10个单元格,但屏幕最多显示4个,实际上iPhone只为其分配4个单元格的内存,没有分配10个,当滚动单元格时,屏幕内显示单元格重复使用这4个内存。...多线程是一个比较轻量级的方法来实现单个应用程序内多个代码执行路径。 iPhoneOS下的主线程的堆栈大小是1M。...OC中是否有二维数组如何实现二维数组 OC中没有二维数组,可通过嵌套数组实现二维数组。 LayoutSubViews在什么时候被调用? 当View本身的frame改变时,会调用这个方法。

    1.4K71

    【IOS开发基础系列】Storyboard专题

    但我想在单元格右边加一张图片以显示玩家级别(以星级的形式)。UITableViewCell的标准样式中不包含可以在单元格中放入一个ImageView,因此我只能选择定制设计。         ...拖两个 Label 到Cell 中,将它们放置到大致等于原先所在的位置。随意修改它们的字体颜色。将两个label的高亮色白色。...最终设计完成是这个样子:         由于是定制单元格,我们不再使用cell 的 textLabel detailTextLabel 属性来显示文本。...如你所见,当你的数据源用 dequeueReusableCellWithIdentifier向 Table View 请求新的单元格时,TableView并不真正把模板 cell 给你,它只是给你一份模板...通过 AutoLayout 可以实现运行时根据设备实际屏幕大小调整控件位置大小。 4.2 代码实例化故事板中的VC 如何装载Storyboard中的ViewController?

    1.1K30

    通过编写扫雷游戏提高你的 Bash 技巧

    for col in $(seq 0 9); do ((r+=1)) # 循环完一列行数加一 is_null_field $r # 假设这里有个函数,它会检查单元格是否真,...举个例子,玩家输入了 c3,这时 Bash 将其分成两个字符:c 3。为了简单起见,我跳过了如何处理无效输入的部分。...在我们的游戏界面显示出来,玩家输入坐标指向了第 33 个单元格,也就是在第 3 行(从 0 开始,否则这里变成 4),第 3 列。...图片.png 记录已选择可用单元格的个数 这个程序需要记录游戏界面中哪些单元格是可选择的。否则,程序会一直让用户输入数据,即使所有单元格都被选中过。...为了实现这一功能,我创建了一个叫 free_fields 的变量,初始值 0。用一个 for 循环,记录下游戏界面中可选择单元格的数量。 如果单元格所对应的值点(.)

    1.2K20

    Excel的count相关函数使用

    • 如果参数是一个数组或引用,那么只统计数组或引用中的数字; 数组或引用中的空白单元格、逻辑值、文字或错误值都将被忽略。 如果要统计逻辑值、文字或错误值,请使用函数 CountA。 ...CountA 返回参数列表中非值的单元格个数。利用函数 COUNTA 可以计算单元格区域或数组中包含数据单元格个数。  语法 COUNTA(value1,value2,...) ...所要计算的值,参数个数 1 到 30 个。在这种情况下,参数值可以是任何类型,它们可以 包括空字符 (""),但不包括空白单元格。如果参数是数组单元格引用,则数组或引用中的空白单元格将被忽略。...说明 即使单元格中含有返回值空文本 ("")的公式,该单元格也会计算在内,但包含值的单元格不计算在内。 COUNTIF 计算区域中满足给定条件的单元格的个数。 ...■如果条件参数是对空单元格的引用,COUNTIFS 会将该单元格的值视为 0。 ■您可以在条件中使用通配符, 即问号 (?) 星号 (*)。 问号匹配任意单个字符,星号匹配任意字符串。

    7210

    Excel公式技巧19: 在方形区域内填充不重复的随机整数

    通常,将此矩阵放置在工作表中的某位置,对于输出结果的最左上角单元格的公式,引用的两个单元格区域包括: 1)10×10的单元格区域从最左上角的单元格正下方的单元格开始,向下并向右延伸。...))-1),RANDBETWEEN(1,100-COUNTA($A9:$J$11,D8:$K8))) 可以看到,公式引用的两个单元格区域是:D8:$K8$A9:$J$11,如下图2所示。...,而且执行这些计数单元格区域不是单个连续的区域,而是两个这样的区域。...,因此在IF函数中将以上内容设置等于,其中IF函函数的参数value_if_true的值是一个从0到99的整数数组,因此: IF(FREQUENCY(($A9:$J$11,D8:$K8),ROW(INDIRECT...实现这一目标的一种方法是将上述数组传递给SMALL函数,并指定参数k的值合适的随机数。

    1.1K20

    精通Excel数组公式011:令人惊叹的SUMPRODUCT函数

    SUMPRODUCT函数不需要Ctrl+Shift+Enter,并且将0、单元格和文本视为数字0;而SUM函数的数组公式结果是错误值#VALUE!,因为数字和文本不能直接相乘。 ?...图5:4个单元格区域相乘后的结果相加得到总压力 注意,如果SUMPRODUCT函数接受两个单元格作为其参数,但这两个单元格都为,则结果是错误值,如下图6所示。 ?...示例中,添加了两个条件并创建了交叉表,在单元格F3中创建公式后,向右向下复制到单元格区域F3:G5。 ? 图12 使用双减号将TRUEFALSE转换成10 首先,注意下面两个问题: 1....图16:SUMIFS函数接受包含比较运算符要处理的数值的单元格作为条件。本示例中,要求在两个日期之间的条件,单元格A2中包含大于等于某日期的条件,单元格B2中包含小于等于某日期的条件。 ?...参数rangecriteria_range在任何情况下都不能处理数组。当使用工作簿引用,然后关闭这个含有外部数据的工作簿时,该工作簿引用将转换为数组并导致该函数显示#VALUE!错误。

    6K10

    针对SAS用户:Python数据分析库pandas

    调试时,调用方法函数返回有关这些对象的信息很有用。这有点类似于在SAS日志中使用PUT来检查变量值。 下面显示了size、shapendim属性(分别对应于,单元格个数、行/列、维数)。 ?...Pandas使用两种设计来表示缺失数据,NaN(非数值)Python None对象。 下面的单元格使用Python None对象代表数组中的缺失值。相应地,Python推断出数组数据类型是对象。...解决缺失数据分析的典型SAS编程方法是,编写一个程序使用计数器变量遍历所有列,并使用IF/THEN测试缺失值。 这可以沿着下面的输出单元格中的示例行。...fillna()方法返回替换值的Series或DataFrame。下面的示例将所有NaN替换为。 ? ?...正如你可以从上面的单元格中的示例看到的,.fillna()函数应用于所有的DataFrame单元格。我们可能不希望将df["col2"]中的缺失值值替换为,因为它们是字符串。

    12.1K20

    Excel VBA编程

    文章目录 如何创建VBA VBA语法规则 声明变量 给变量赋值 让变量存储的数据参与运算 关于声明变量的其他知识 变量的作用域 特殊的变量——数组 声明多维数组 声明动态数组 其他创建数组的方法 数组函数...数组内容如果不够填充单元格长度,超出的数据会以NA值填充。若需要填充的单元格数目不够数组长度,那么会按照顺序依次填充。...数组的存取 当将Excel表中的数据传递给数组时,默认建立的是一个二维数组,因此在取数组的值时,需要传递两个数值进去,如果只传入一个数组,会出现下标越界的警告。...引用单个固定的单元格区域:这种方法实际上就是通过单元格地址来引用单元格 引用多个不连续的单元格:将range属性的参数设置一个用逗号分成多个单元格地址组成的字符串 引用多个区域的公共区域:将range...对象的usedrange属性 worksheet对象的usedrange属性返回工作表中已经使用的单元格围城的矩形区域.usedrange属性返回的总是一个矩形区域,无论这些区域是否存在空行,列或者单元格

    45.5K33

    精通Excel数组公式026:你弄清楚大型数组公式是怎么工作的吗?

    弄清楚特定数组公式工作逻辑的技巧: 1.将公式分解成尽可能小的部分,将每部分放置在单独的单元格中,这可以让你看到每部分是如何工作的。这给你提供了不同的视角,不同于单个单元格中查看整个公式。...如果你将这样的公式元素放置在单个单元格中并复制,可以清楚地看到这部分公式正在做什么。...查找包含单元格的行中的第1个数据项 下图1展示了一个数组公式,获取一行中的第1个非单元格中的数值。...image.png 图1 查找与行中第1个非单元格相关的列标题 如下图2所示,从列标题中获取与行中第1个非单元格对应的日期。...单元格D4D5中计算所有CPA数据的百分位标记。单元格D11D17计算满足条件(即学校名称)的百分位标记。 image.png 图5 按条件排序 有时候,需要按条件对数据排序。

    2.3K20

    36条常用Excel技巧 收藏备用!

    一、单元格设置文本;二、在输入数字前先输入' 5、如果隐藏了B列,如果让它显示出来?...) (1)、根据符合行列两个条件查找对应结果 =VLOOKUP(H1,A1:E7,MATCH(I1,A1:E1,0),FALSE) (2)、根据符合两列数据查找对应结果(数组公式) =INDEX(C1...:C7,MATCH(H1&I1,A1:A7&B1:B7,0)) 16、如何隐藏单元格中的0 单元格格式自定义0;-0;;@ 或 选项》视图》值去勾。...(ROW(A1:A1000),2))) 28、查看字符串字数 =LEN(A1) 29、求非单元格数量 公式计算出来的数据,COUNTA不能用的(否则空字符也计算进去了) =COUNTIF($E$3:$...=8^(1/3) 33、单元格中的数据分散对齐 文本格式》全角输入 34、查找工作表中的链接 Ctrl+~ 或编辑》链接 35、如何单元格自动填0 选中需更改的区域》查找》》替换》0 36、把Word

    3.4K50

    iOS,面试必看,最全梳理

    copy:一般认为,是在内存中重新开辟了一个新的内存空间,用来 存储新的对象,原来的对象是两个不同的地址,引用计数分别为1。但是当copy对象不可变对象时,那么copy 的作用相当于retain。...对于单元格重用的理解 当屏幕上滑出屏幕时,系统会把这个单元格添加到重用队列中,等待被重用,当有新单元从屏幕外滑入屏幕内时,从重用队列中找看有没有可以重用的单元格,若有,就直接用,没有就重新创建一个。...解决cell重用的问题 UITableView通过重用单元格来达到节省内存的目的,通过为每个单元格指定一个重用标示(reuseidentifier),即指定了单元格的种类,以及当单元格滚出屏幕时,允许恢复单元格以便复用...如一个TableView中有10个单元格,但屏幕最多显示4个,实际上iPhone只为其分配4个单元格的内存,没有分配10个,当滚动单元格时,屏幕内显示单元格重复使用这4个内存。...OC中是否有二维数组如何实现二维数组 OC中没有二维数组,可通过嵌套数组实现二维数组。 LayoutSubViews在什么时候被调用? 当View本身的frame改变时,会调用这个方法。

    1.2K30

    iOS两年前的面试题总结,现在的你掌握了嘛?

    (我们称之为弱引用). retain:保留计数,获得到了对象的所有权,引用计数在原有基础上加1. copy:一般认为,是在内存中重新开辟了一个新的内存空间,用来 存储新的对象,原来的对象是两个不同的地址...对于单元格重用的理解 当屏幕上滑出屏幕时,系统会把这个单元格添加到重用队列中,等待被重用,当有新单元从屏幕外滑入屏幕内时,从重用队列中找看有没有可以重用的单元格,若有,就直接用,没有就重新创建一个。...解决cell重用的问题 UITableView通过重用单元格来达到节省内存的目的,通过为每个单元格指定一个重用标示(reuseidentifier),即指定了单元格的种类,以及当单元格滚出屏幕时,允许恢复单元格以便复用...如一个TableView中有10个单元格,但屏幕最多显示4个,实际上iPhone只为其分配4个单元格的内存,没有分配10个,当滚动单元格时,屏幕内显示单元格重复使用这4个内存。...OC中是否有二维数组如何实现二维数组 OC中没有二维数组,可通过嵌套数组实现二维数组。 LayoutSubViews在什么时候被调用? 当View本身的frame改变时,会调用这个方法。

    1.2K20

    使用PyTorch实现简单的AlphaZero的算法(1):背景介绍

    下图显示了游戏中的一些中间状态。 游戏板(简称黑板)上有M行N列,在上图中,M=N=5。黑板上有M*N = 25个单元格。在游戏开始时,所有的格子都是的。...现在我们知道了游戏是如何从一个状态发展到下一个状态的,可能会有分裂;或者在单个单元格中增加一个球体。但玩家如何获胜呢?游戏的目标很简单,玩家必须消灭棋盘上所有敌人的球。...下图显示如何表示状态的示例。 状态转换 我们知道了如何表示一个状态,下面要关注一个更重要的问题,在当前状态下,如何得到下一个状态。为了获得下一个状态,需要知道玩家点击的单元格。...所以本质上是在做广度优先遍历,这可以借助队列来实现状态转换。 实现简单的游戏规则 状态 实现状态表示并不复杂。将棋盘信息存储不同numpy数组中的球的数量球的颜色。状态表示还包括玩家的回合。...通过跟踪红色绿色的球体计数(作为myorbsopporbs)来检查它,并在循环的每次迭代中更新它们。

    80630

    Excel揭秘19:SERIES公式

    认识SERIES公式 当你选取图表中的系列时,不仅工作表中该系列的数据会高亮显示,而且在公式栏中会显示一个公式,这个公式是你创建图表或添加系列时,Excel自动你编写的。...如果,则使用与图表中第一个系列相同的值或者使用计数数字(1,2,3等)。注意,在非XY散点图中,所有系列使用与图表中第一个系列相同的X值。...Y值不能为否则Excel会提示系列必须至少包含一个值。Y值中的文本被视为0。 绘制顺序 绘制顺序是图表的系列号,是介于1图表系列数之间的数字。...气泡大小 气泡大小包含用于计算气泡图中气泡直径的数字,通常是单元格引用,也可以是花括号中的硬编码数值数组。气泡大小不能为否则Excel会提示系列必须至少包含一个值。...仍然以上图1所示的工作表例,我们将Y值由列C中的单元格引用修改为列D中的单元格引用: =SERIES(Sheet1!$C$2,Sheet1!$B$3:$B$8,Sheet1!

    5.1K33

    你有一份面试题要查收

    可以用选择性粘贴功能,并勾选“跳过单元”选项,确定即可。...此时我们应该用通配符来进行模型查找包含“长安”关键字的单元格。通配符有两个,它们分别是: (1)星号(*),可以代替任意字符,可以单个,多个或者是没有字符。 (2)问号(?),可代替任意单个字符。...然后对定位条件进行一系列的设置,在本次需求中我们要定位出空白单元格,所以选“值”。...第二步:用ISEVEN判断MID函数提取出来的数据是否偶数,如果参数 number 偶数,返回 TRUE,否则返回 FALSE,语法具体应用如下: image.png 在本例中的MID一起组合成的公式...MATCH函数最终返回的值是查找的内容也就是姓名在表格里第几行,最终的值1,2,3…… INDEX函数的第一参数单元格区域或数组常量,本例中就是整张表格的区域,第二参数是选择数组中的某行,如姓名 “李项

    2.2K11

    “Excel格式”最风骚玩法,炫技加薪就靠它了

    如果只使用单个@,作用是引用原始文本;如果使用多个@, 则可以重复文本。 ? 注意:@符号的位置决定了Excel输入的数字数据相对于添加文本的位置 ?...可以将条件或者颜色写入[],从而实现自定义条件。 可以根据单元格内容判断后再设置格式。条件格式化只限于使用三个条件,其中两个条件是明确的,另个是“所有的其他”。 ? ?...003 典型应用 01、巧显示单位 如果将数值单元写在同一个单元格中,那么数值将变为无法参与计算的文本形式,这在Excel数据表中是不允许的,如果确实需要显示单位,可以这样处理。...这样设置之后,单元格中的显示“数值+单位”,但是实际上单元格中只有数字,格式数值格式,可以参与数学运算,如图所示。 ?...当单元格中数字满足指定的条件时,Excel 可以自动将条件格式应用于单元格。 可以根据单元格内容判断后再设置格式。条件格式化只限于使用三个条件,其中两个条件是明确的,另个是“所有的其他”。 ? ?

    2.4K30

    Excel问题集合

    引用问题 我在excel中想实现这么一个功能,如单元格D12有一个数据是4,现在我想引用A4的数据,但4是由D12提供的,即如何实现A4=A(D12)。...也就是,在Excel中,A7单元,能否实现把后面的数字用算式来代替,如A(3+4),或者是单元格的嵌套,A(D12),恳请高手解答。...,会完整显示出15个号码来,而不会显示那令人讨厌的科学计数方式来了。...2、如果已经输入了大量的号码,全部以科学计数显示的话,而又懒的按照上面的方法一个一个的重新输入的话,也有这个好方法哦,比如已在单元A1:A100输入了号码,按以下步骤做:》选择单元A1:A100》单击鼠标右键...输完后,B1单元也是显示出完整的15位数字了。 用countif算出数值大小在50~60之间的单元格个数 解答:①你可以综合一下呀!

    1.6K20
    领券