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

如果单元格被点击则显示按钮,离开后在UITableView中隐藏

在iOS开发中,如果想要实现当单元格被点击时显示按钮,离开后隐藏按钮的效果,可以通过以下步骤来实现:

  1. 首先,在UITableViewDelegate协议的方法tableView(_:didSelectRowAt:)中获取被点击的单元格,并记录下该单元格的索引或标识。
  2. 在UITableViewCell的子类中,添加一个按钮作为子视图,并设置其初始状态为隐藏。
  3. 在UITableViewCell的子类中,重写layoutSubviews()方法,在该方法中根据按钮的显示状态来调整其他视图的布局。
  4. 在UITableViewDelegate协议的方法tableView(_:willDisplay:forRowAt:)中根据记录的索引或标识来判断是否需要显示按钮,并更新按钮的显示状态。

下面是一个示例代码:

代码语言:txt
复制
import UIKit

class CustomTableViewCell: UITableViewCell {
    let button = UIButton(type: .system)
    
    override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
        
        // 设置按钮的属性
        button.setTitle("按钮", for: .normal)
        button.frame = CGRect(x: 0, y: 0, width: 60, height: 30)
        button.isHidden = true
        
        // 将按钮添加到单元格中
        addSubview(button)
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    override func layoutSubviews() {
        super.layoutSubviews()
        
        // 根据按钮的显示状态来调整其他视图的布局
        if button.isHidden {
            // 隐藏按钮时的布局
        } else {
            // 显示按钮时的布局
        }
    }
}

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
    let tableView = UITableView()
    var selectedIndexPath: IndexPath?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 设置UITableView的属性
        tableView.delegate = self
        tableView.dataSource = self
        tableView.frame = view.bounds
        view.addSubview(tableView)
    }
    
    // UITableViewDelegate协议方法:单元格被点击时调用
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        // 记录被点击的单元格的索引
        selectedIndexPath = indexPath
        
        // 刷新被点击的单元格
        tableView.reloadRows(at: [indexPath], with: .none)
    }
    
    // UITableViewDelegate协议方法:单元格将要显示时调用
    func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
        // 判断是否需要显示按钮
        if indexPath == selectedIndexPath {
            // 显示按钮
            if let customCell = cell as? CustomTableViewCell {
                customCell.button.isHidden = false
            }
        } else {
            // 隐藏按钮
            if let customCell = cell as? CustomTableViewCell {
                customCell.button.isHidden = true
            }
        }
    }
    
    // UITableViewDataSource协议方法:返回单元格数量
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 10
    }
    
    // UITableViewDataSource协议方法:返回单元格
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = CustomTableViewCell(style: .default, reuseIdentifier: nil)
        
        // 配置单元格的其他内容
        
        return cell
    }
}

在上述示例代码中,我们创建了一个自定义的UITableViewCell子类CustomTableViewCell,其中包含一个按钮作为子视图。在UITableViewDelegate协议的方法中,我们记录了被点击的单元格的索引,并在单元格将要显示时根据索引来判断是否需要显示按钮。在CustomTableViewCell的layoutSubviews()方法中,我们根据按钮的显示状态来调整其他视图的布局。

这样,当单元格被点击时,按钮会显示出来,离开后按钮会隐藏起来。你可以根据实际需求来调整按钮的样式和布局。

相关搜索:在angularjs中隐藏和显示按钮点击按钮被隐藏,结果显示在android studio中按钮在Javascript中隐藏后不显示如果用户在显示HTML隐藏按钮的区域中单击该按钮,则该按钮仍可单击如何在按钮点击时显示进度条直到广告被加载,在广告被加载后再次隐藏进度条并显示没有按钮点击按钮的广告如何在点击按钮后在pygame中显示文本jQuery:如何在追加3项后隐藏按钮(添加更多),如果从3项中移除一项则显示按钮在Excel VBA中单击按钮后显示单元格值有没有办法在React原生中通过按钮点击来显示/隐藏功能组件在某个事件或按钮被点击后,如何在Vue.js中重新加载/刷新网页?在单元格中的标签被隐藏后,如何缩小表视图中一行的大小?点击数据表单元格中的按钮后,根据ID显示/获取详细信息- React.js当我点击项目列表中的按钮时,停止itemtap事件,如果我在该按钮之外的任何地方按下,则保持itemtap事件js,css:点击折叠按钮后,在elemnt.style值高度中显示的紧凑元素是空的在PyQt中从表格微件中选择多行后,单元格微件(按钮)显示在错误的位置Angularjs (1.3) - UI元素值在隐藏后被清除(未绑定),并从master中显示当前控制器的div元素我有一个搜索栏,在搜索栏中搜索项目后,如果我点击后退按钮,应用程序将关闭在不使用数据库的情况下,在他们的按钮点击上选择2个DropDowns后,需要在下面的GridView中显示数据
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

底牌项目中上传牌谱功能之编辑标准模式

在编辑标准模式下如果用户没有编辑某个条目那么在预览中不能显示该条目,如果用户隐藏了某个条目,同样在预览中不能显示。...先说预览页面,思路和自定义编辑牌谱相似,将编辑页面编辑的信息传递过来然后进行页面的布局,在点击完成按钮的时候生成图片,同时进行图片的上传。...(显示、隐藏按钮)....如果没有编辑内容那么某个text字符串就是nil,nil是不能被添加到数组中的,这是需要将为nil的字符串设置为@“”。在预览页面,如果数组中某个元素内容为@“”那么就不显示该内容。...情况3:如果某个有内容的条目被隐藏了则在预览页面不显示此条目。

85830

iOS:分割控制器UISplitViewcontroller

分割控制器UISplitViewController 功能:它也是ipad的一个新特性,在屏幕上可以同时显示两个控制器,左边一个,右边一个;左边的为主控制器,右边的为详细控制器,主控制器可以根据需要显示或隐藏...master时,在detail控制器的toolbar上设置并显示一个按钮 barButtonItem.title = @“Master”; [detailViewController...2、导入几张素材图片,用来在详细控制器中显示。...*cell = [self.tableView dequeueReusableCellWithIdentifier:reuseIdentifier]; //2.如果没有找到,自己创建单元格对象...:[UIColor whiteColor]]; } 演示结果如下: 开始时: 点击Master,显示Master主控制器: 点击单元格时,Detail详细控制器显示的内容: 点击屏幕,关闭Master

2K30
  • Swift - 给TableView添加编辑功能(删除,插入)

    1,下面的样例是给表格UITableView添加编辑功能: (1)给表格添加长按功能,长按后表格进入编辑状态 (2)在编辑状态下,第一个分组处于删除状态,第二个分组处于插入状态 (3)点击删除图标...,删除对应条目 (4)点击添加图标,插入一条新数据 ?...{ return "确认删除" } // 单元格编辑后的响应方法 func tableView(_ tableView: UITableView, commit editingStyle:...(2)长按表格进入编辑状态,所有单元格都可以进行删除操作。 (3)同时在编辑状态下,在下方会自动出现一个新增操作单元格。点击前面的加号,便会给数据集中添加一条新数据。 ?...{ return "确认删除" } // 单元格编辑后的响应方法 func tableView(_ tableView: UITableView, commit editingStyle:

    3K20

    iOS页面间传递消息之Delegate

    当我们要设置点击列表行的相应时,就要用到UITableView Delegate的方法,这里要讲的,跟这个是同一个东西。 先看一个效果: 在主界面有一个按钮和一个方块,方块原本是隐藏的。...这个协议由子界面定下规矩,比如点击显示方块的按钮会如何,点击隐藏的按钮又会如何。任何界面都可以声明我要遵循子界面的这个协议。...定下规矩名后,我们要在点击按钮的时候去使用规矩,所以在.m文件中: // 显示方块 - (void)showSquare { [self.delegate showTheSquare];// 调用委托方法...> 这里的协议名就是我们在子界面中声明协议时定下的名字,还记得吧,这个协议中我们定下了两个方法,分别表示显示和隐藏方块。...我们之前已经在子界面中设置了,点击两个按钮会调用那两个方法,但是这两个方法具体要做什么,确实在主界面中设置的。

    74330

    iOS 9 Storyboard 教程(二下)

    当你关闭 Add Player控制器,也点击了Cancel和Done按钮的时候,你应该会看到deinit里print()方法输出地状态信息.如果你再一次打开了这个控制器,你应该也会再一次看到从init?...现在让我们给这个新的控制器一些数据来显示吧.在GamePickerViewController.swift中,把一个具有硬编码值的games字符串数组添加到顶部: var games:[String]...就数据源而言应该那样做.运行app然后点击Game行.新的Choose Game控制器将会滑出来.然而点击这些行不会做任何事,那是因为这个控制器是在导航堆栈上被弹出来的.但是你却总可以点击返回按钮返回到...这个方法在点击之后就会取消选中.那使得它从灰色高亮褪色为正常的白色.然后它就会从先前选中的单元格移除对号标记,然后把对号放到刚刚点击的那一行上....现在运行app测试一下吧.点击一个游戏的名称,那一行就会显示一个对号.点击另一个游戏的名称,标记就会随至移动到那一行. ?

    2.2K10

    底牌项目中的选择牌谱上传功能--深刻理解UITableView复用

    此界面的布局: 此界面由UITableView构成,根据日期的不同设置单元格,单元格内是一张张图片,在每张图片上添加了一个按钮用于选择图片。...问题: 在选中一张图片后会将该图片存储到一个数组中以便上传,可当再次点击按钮取消选中图片时却不知道该如何将该图片从数组中删除。...解决: 在Cell中制定协议设置代理,在选中图片的按钮点击事件中如果代理响应了协议中的方法则让代理执行该方法。关键:在该方法中要将图片的信息传递过去。...解决办法:点击图片上的按钮同样执行协议中的方法,也就是上面贴出来的方法。...解决: 思路:每次使用单元格的时候将选中的图片和单元格中的图片进行比较,如果有相同的图片,则将相同图片上的按钮设置为选中状态。

    1.1K10

    iOS开发常用之网络

    ExpandingStackCells - 采用UIStackView实现表格单元格扩展内容显示示例及解决方案。...QuickRearrangeTableView - 基于UITableView的快速重排功能扩展子类。通过长按选定单元格然后滚动移动到指定位置。...TabBarController,支持自定义TabBarItem样式或添加动画 隐藏与显示 SlideTapBar - 滚动栏菜单,向上滚动时隐藏tabbar,向下滚动马上显示tabbar。...WZFlashButton - WZFlashButton,点击后按钮里面出现水波扩散效果。 Twinkle - 为字体加上钻石版闪耀的效果。使用Swift编写。...XTLoopScroll - 用两个timer三个重用的视图实现无限循环scrollView,1自动轮播2点击监听回调当前图片3手动滑动后重新计算轮播的开始时间,良好的用户体验。

    23.7K10

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

    具体实现方法:          例如,在故事板中Level1VC中添加一个按钮,然后将level2VC拖入故事板,按住cmd键,鼠标点击按钮并拖入level2VC,在弹出的菜单中选择show事件,即完成了从...在文档树中这些关系显示如图中所示:         注意 TableViewController 上被加入了一个navigationBar。...故事板默认使用“Inferred”(依靠推断)设置,意思是该场景如果在NavigationController中显示则会显示导航条,如果在 TabBarController 中显示则会显示TabBar,...在以前,如果你要定制表视图单元格,你要么在代码中向cell对象添加自己的 subviews ,要么新建一个 nib 然后从nib 中加载你自己的 cell。...但我想在单元格右边加一张图片以显示玩家级别(以星级的形式)。UITableViewCell的标准样式中不包含可以在单元格中放入一个ImageView,因此我只能选择定制设计。

    1.3K30

    DTCoreText的集成与使用目录一、相关资源二、DTCoreText的集成三、DTCoreText的使用四、可能遇到的错误五、参考链接

    但是如果我们的Html字符串里图片链接没有包含大小,图片并不能正常显示。...//DTCoretText在解析Html的时候,如果遇到网络图片会插入一个占位符 //对于图片类型(DTImageTextAttachmentd)的占位符,我们使用DTLazyImageView来显示...//frame:超链接字符串所在的位置,需要将自定义响应按钮设置为此Frame return nil; } 注意:如果我们需要显示一些输入框之类的视图,也可以借助此方法。...3.DTAttributedTextCell 如果我们需要在单元格上显示富文本,DTCoretText也为我们提供了特有的类来解决这个问题,那就是DTAttributedTextCell。...,就手动刷新当前在屏幕显示的单元格 NSArray *indexPaths = [self.tableView indexPathsForVisibleRows]; if(indexPaths

    4.9K90

    iOS开发——UITableView勾选效果

    如今的APP开发中,UITableView是最常用的控件之一,而UITableView中有个很常见的效果就是勾选效果,这个效果是由UITableViewCell中的accessoryType属性来决定的...indexPath``` 方法中实现判断被选中的单元格的功能。...记录下之前选择的单元格,并且实时更新。 - 其次,解决单元格的复用问题。不然当单元格复用时,会显示多个勾选的BUG。看了一下网上分享的很多的方法,都没有解决单元格复用的问题,或者问的很笼统。...首先我们先声明一个变量,用来存储被选择的行数的标志 @property (nonatomic, strong) NSIndexPath *selectPath; //存放被点击的哪一行的标志 之后我们实现...selectPath = [indexPath copy]; } [tableView deselectRowAtIndexPath:indexPath animated:YES]; } 最后看一下怎么在`

    1.7K30

    自学Swift之路(二)UITableView自定义和实际利用

    6EDD4AC9-47E3-401F-91A4-2DA836439787.png Demo开始之前,我们想想应该会使用到屏幕宽高等一些常用的值,在OC中,咱们可以使用PCH然后宏定义,然而在Swift中...// 登录按钮 let loginBtn = UIButton(type: .Custom) loginBtn.frame = CGRectMake(25,...self.presentViewController(buildListNVC, animated: true, completion: nil) } } 在登录后我们会进入一个表视图...coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } } 代码中自定义的单元格加上了一个...ImageView和一个Label,虽然数据是死的,但是在Swift中,另外一个类是可以直接访问另一个类中的变量的(如果没做任何保护的话),所以我们在配置cell的时候是可以直接赋值的,这里就不弄了,然后我们看创建表视图那一块

    2.4K90

    自学Swift之路(一)UI入手之基本控件

    我们会进入这个界面 C18EA84A-89AF-4920-8824-1CF1F2CA8B8C.png 好了开始编程:写一个创建子视图的方法,里面创建一些基本的UI控件,然后在viewDidLoad中调用...myBtn.setBackgroundImage(UIImage(named: "查公共设施"), forState: .Normal) myBtn.setTitle("点击按钮...} 当然,别的方法也是一样,如点击单元格: func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath...) { print("点击了单元格") } 好了,这篇文章的内容就到这里了,下一篇文章将会围绕UITableView,自定义UITableViewCell来写点可视化内容较强的东西...本人也是正在学习中,文章内容如有错误,还请指正,有需要优化的地方,也请帮忙指出,帮助大家共同进步

    2.9K110

    Excel表格的35招必学秘技

    3.调整好行高和列宽后,同时选中A1至G2单元格区域(第1位学生的成绩条区域),按“格式”工具栏“边框”右侧的下拉按钮,在随后出现的边框列表中,选中“所有框线”选项,为选中的区域添加边框(如果不需要边框...②如果需要画出不同颜色的边框,可以先按工具栏右侧的“线条颜色”按钮,在随后弹出的调色板中选中需要的颜色后,再画边框即可。③这一功能还可以在单元格中画上对角的斜线。...当然,为了使欧元的显示更显专业,我们还可以点击Excel工具栏上的“欧元”按钮,这样所有转换后的货币数值都是欧元的样式了。...而在A8到A13的单元格中我们则建立了一个“函数查询”区域。我们的设想是,当我们在“输入学生姓名”右边的单元格,也就是C8格中输入任何一个同学的名字后,其下方的单元格中就会自动显示出该学生的各科成绩。...以后,只要我们双击“监视窗口”中的该条目,被监视的单元格就会不请自来了。   提示:当包含有指向其他工作簿的单元格被监视时,只有当所有被引用的工作簿都打开时,才能在“监视窗口”的列表中显示出来。

    7.6K80

    解决UITableView中Cell重用机制导致内容出错的方法总结

    上面主要是一个个的UITableViewCell,可以让UITableViewCell响应一些点击事件,也可以在UITableViewCell中加入UITextField或者UITextView等子视图...,使得可以在cell上进行文字编辑。...UITableView中的cell可以有很多,一般会通过重用cell来达到节省内存的目 的:通过为每个cell指定一个重用标识符(reuseIdentifier),即指定了单元格的种类,当cell滚出屏幕时...,会将滚出屏幕的单元格放入 重用的queue中,当某个未在屏幕上的单元格要显示的时候,就从这个queue中取出单元格进行重用。...比如,当一个cell含有一个 UITextField的子类并被放在重用queue中以待重用,这时如果一个未包含任何子视图的cell要显示在屏幕上,就会取出并使用这个重用的 cell显示在无任何子视图的cell

    2.5K50

    【iOS7一些总结】9、与列表显示(在):列表显示UITableView

    列表显示,顾名思义它是在一个列表视图的形式显示在屏幕上的数据的内容。于ios在列表视图UITableView达到。这个类在实际应用中频繁,是很easy理解。...UITableView定义在头文件UITableView.h中,详细的定义能够查看官方文档;从定义中能够看出,UITableView继承自UIScrollView类,因此在支持方便地显示列表数据的同一时候...在详细的使用过程中,能够创建一个独立的UITableView,也能够直接创建一个UITableViewController。...创建完毕后,将tableView的delegate和dataSource设置为self,即托付给当前视图控制器来控制表视图的数据显示和响应。...方法中,首先会检查是否有闲置的单元格,假设没有闲置的单元格。

    1.9K40

    《iOS Human Interface Guidelines》——Table View表视图

    在简单风格中,行可以被分到有标题的章节中,并且在视图的右边界可以显示一个可选的垂直索引。在章节的第一个条目之前可以显示页眉,在最后一个条目之后可以显示页脚。 分组风格。...在两种风格中,表行会在用户点击选中时简短地高亮。如果一行的选择导致导航到一个新的界面,选中的行会高亮并且伴随着新的界面滑动进来。...使用简单或分组表视图来显示用户点击表中一行条目时的选项清单。使用简单表视图来显示用户点击一个按钮或其他不在表的行中的UI元素时的选项清单。 显示层级信息。简单表风格很适合显示层级信息。...用户期待当他们点击列表条目时表中的行能简短地高亮一下。在点击之后,用户期待一个新视图的出现(或者行显示一个勾选符号)来表示条目被选中了。 如果表内容是冗长的或复杂的,不要等到所有数据都获取之后再显示。...显示在表右边界的表视图元素——比如扩展指示器——会干扰到索引。 如果你想要用非标准的方式布局你的表单元格,创建自定义的单元格风格。创建自定义的表单元格风格会比标准的要更好。

    2.4K20
    领券