在自定义cell头部控件UITableViewHeaderFooterView(和自定义cell的方法几乎一样)时,出现了头部控件子控件不显示的问题。

注意和自定义cell的区别。

.h文件

  1. #import <UIKit/UIKit.h>
  2. #import "CHModleGroup.h"
  3. @interface HeaderView : UITableViewHeaderFooterView
  4. @property (nonatomic, weak) UILabel *count;
  5. @property (nonatomic, weak) UIButton *name;
  6. + (instancetype)headerViewWithTableView:(UITableView *)tableView;
  7.  
  8. @property (nonatomic, strong) CHModleGroup *group;
  9.  
  10. @end

.m文件

  1. #import "HeaderView.h"
  2.  
  3. @implementation HeaderView
  4. + (instancetype)headerViewWithTableView:(UITableView *)tableView{
  5. static NSString *ID = @"header";
  6. HeaderView *header = [tableView dequeueReusableHeaderFooterViewWithIdentifier:ID];
  7. if (header == nil) {
  8. header = [[HeaderView alloc]initWithReuseIdentifier:ID];
  9. }
  10. return header;
  11. }
  12.  
  13. - (id)initWithReuseIdentifier:(NSString *)reuseIdentifier
  14. {
  15. if (self = [super initWithReuseIdentifier:reuseIdentifier]) {
  16. UIButton *nameView = [UIButton buttonWithType:UIButtonTypeCustom];
  17. // 背景图片
  18. [nameView setBackgroundImage:[UIImage imageNamed:@"发布新闻背景副本"] forState:UIControlStateNormal];
  19. [nameView setBackgroundImage:[UIImage imageNamed:@"welcome3"] forState:UIControlStateHighlighted];
  20. // 设置按钮内部的左边箭头图片
  21. [nameView setImage:[UIImage imageNamed:@"buddy_header_arrow副本"] forState:UIControlStateNormal];
  22. [nameView setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
  23. // 设置按钮的内容左对齐
  24. nameView.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
  25. // 设置按钮的内边距
  26. // nameView.imageEdgeInsets
  27. nameView.titleEdgeInsets = UIEdgeInsetsMake(, , , );
  28. nameView.contentEdgeInsets = UIEdgeInsetsMake(, , , );
  29. [self.contentView addSubview:nameView];
  30. self.nameView = nameView;
  31.  
  32. // 2.添加好友数
  33. UILabel *countView = [[UILabel alloc] init];
  34. countView.textAlignment = NSTextAlignmentRight;
  35. countView.textColor = [UIColor grayColor];
  36. [self.contentView addSubview:countView];
  37. self.countView = countView;
  38.  
  39. }
  40. return self;
  41. }
  42.  
  43. /**
  44. * 当一个控件的frame发生改变的时候就会调用
  45. *
  46. * 一般在这里布局内部的子控件(设置子控件的frame)
  47. */
  48. - (void)layoutSubviews
  49. {
  50. //一定要调用super的方法
  51. [super layoutSubviews];
  52.  
  53. // 1.设置按钮的frame
  54. self.nameView.frame = self.bounds;
  55.  
  56. // 2.设置数的frame
  57. CGFloat countY = ;
  58. CGFloat countH = self.frame.size.height;
  59. CGFloat countW = ;
  60. CGFloat countX = self.frame.size.width - - countW;
  61. self.countView.frame = CGRectMake(countX, countY, countW, countH);
  62. }
  63.  
  64. //设置数据
  65. - (void)setGroup:(MJFriendGroup *)group
  66. {
  67. _group = group;
  68.  
  69. // 1.设置按钮文字(组名)
  70. [self.name setTitle:group.name forState:UIControlStateNormal];
  71.  
  72. // 2.设置数量(总数)
  73. self.count.text = [NSString stringWithFormat:@"%lu", friends.count];
  74. }
  75.  
  76. @end

解决TalbleView头部或底部子控件不显示问题的更多相关文章

  1. Android自定义组合控件内子控件无法显示问题

    今天自定义了一个组合控件,与到了个奇葩问题: 我自定义了一个RelativeLayout,这个layout内有多个子控件.但奇怪的是这些子控件一直显示不出来.调试了一下午,竟然是因为在获取(infla ...

  2. 解决ListView中Item的子控件与Item点击事件冲突

    常常会碰到在ListView中点击当中一个Item.会一并触发其子控件的点击事件.比如Item中的Button.ImageButton等.导致了点击Item中Button以外区域也会触发Button点 ...

  3. 终于懂了:FWinControls子控件的显示是由Windows来管理,而不是由Delphi来管理(显示透明会导致计算无效区域的方式有所不同——透明的话应减少剪裁区域,所以要进行仔细计算)

    在研究TCustomControl的显示过程中,怎么样都找不到刷新FWinControls并重新显示的代码: procedure TWinControl.PaintHandler(var Messag ...

  4. 记录下UIButton的图文妙用和子控件的优先显示

    UIButton的用处特别多,这里只记录下把按钮应用在图文显示的场景,和需要把图片作为按钮的背景图片显示场景: 另外记录下在父控件的子控件优先显示方法(控件置于最前面和置于最后面). 先上效果图: 1 ...

  5. 记录下帮助一位网友解决的关于android子控件的onTouch或onClick和父OnTouch 冲突的问题。

    前三天收到位网友的私信求助,问题大概如标题所示.具体是下面的情况,个人感觉,这个问题挺有趣,也会在实际项目开发中很常见.不想看前奏的请直接跳至解决方法. 问题原型: 父控件是自定义的 LinearLa ...

  6. ListView中的Item点击事件和子控件的冲突或者item点击没有反应的解决的方法

    fragment中加入了button和checkbox这些控件.此时这些子控件会将焦点获取到.所以经常当点击item时变化的是子控件.item本身的点击没有响应. 这时候就能够使用descendant ...

  7. listView 解决焦点冲突问题 item项和子控件之间的冲突

    listView 在item布局的顶级布局中设置 android:descendantFocusability="blocksDescendants"可以阻止子控件获取焦点 这样使 ...

  8. 关于ListView中item与子控件抢夺焦点的解决方法

    1.在开发中,listview可以说是我们使用最频繁的控件之一了,但是关于listview的各种问题也是很多.当我们使用自定义布局的Listview的时候,如果在item的布局文件里面存在Button ...

  9. 浅析:点击父控件时,子控件中的textview自动进入选中状态

    原因:父控件属性android:clickable="true",而textview之类的自控件默认不可点击,没有独立的点击监听,这样选中父控件时,textview之类的子控件也进 ...

随机推荐

  1. 003_kafka_主要配置

    1.broker配置 2.Producer主要配置 3.Consumer主要配置 出错提示信息: replication factor: 1 larger than available brokers ...

  2. 解决:Unknown table engine 'InnoDB'

        把查询mysql的结果输出到文件的过程中出现了错误 ERROR 1286 (42000): Unknown table engine 'InnoDB'     这个问题的原因是新版mysql是 ...

  3. jquery iframe自适应高度[转]

      经典代码 iFrame 自适应高度,在IE6/IE7/IE8/Firefox/Opera/Chrome/Safari通过测试. 很古老的方法: <iframe src="../In ...

  4. Struts2 报 Result 错误

    写的时候犯了个低级错误  struts.xml中 配置result 的时候 没有配置type

  5. jQuery 源码中的 camelCase

    先看一下源码 //65-72行 // Matches dashed string for camelizing //匹配连字符 ‘-’ 和其后的第一个字母或数字,如果是字母,则替换为大写,如果是数字, ...

  6. js异步加载

    默认情况javascript是同步加载的,也就是javascript的加载时阻塞的,后面的元素要等待javascript加载完毕后才能进行再加载,对于一些意义不是很大的javascript,如果放在页 ...

  7. 关于this,super的来源猜想

    this:this可以在成员函数中引用,调用成员函数函数,一般都是 obj.fun(): 这个成员函数的执行者就是当前类的对象, 所以,this应该是由此传递的. super:相对于this, 却不应 ...

  8. 用maven搭建 testNG+PowerMock+Mockito测试框架

    单元测试是开发中必不可少的一部分,是产品代码的重要保证. Junit和testNG是当前最流行的测试框架,Junit是使用最广泛的测试框架,有兴趣的话自己baidu一下. testNG基于Junit和 ...

  9. web前端基础篇⑥

    LESS.①是一种拓展技术,基于css.②包含变量.混合.函数.运算.③简化css代码.降低维护成本④目前用的解析器(koala) 变量(值可变)@变量名:值步骤:①建立文件夹②建html和less两 ...

  10. Jquery和Javascript 实际项目中写法基础 (1)

    一.JS 是什么,jquery 是什么  就不说明了,直接说一般使用是怎么样的 <!DOCTYPE html> <html> <head> <meta cha ...