hpi*_*que 24 interface-builder uitableview ios
经过多年避免瘟疫之类的Interface Builder,我决定给它一个机会.这是不容易的.
以UITableViewHeaderFooterView为例.就像UITableViewCell,它有一个contentView属性.UITableViewCell与之不同,它在Interface Builder对象库中没有模板.
我们如何使用Interface Builder创建UITableViewHeaderFooterView内容中的内容contentView?registerNib:forHeaderFooterViewReuseIdentifier:存在的事实使我认为这应该是某种可能的.
hpi*_*que 31
这是我最接近UITableViewHeaderFooterViewIB的定义:
一个.创建一个UITableViewHeaderFooterView子类(MYTableViewHeaderFooterView).
湾 为contentViewonly(MYTableViewHeaderFooterContentView)创建一个nib文件.
C.覆盖initWithReuseIdentifier:在MYTableViewHeaderFooterView加载在笔尖文件中定义的图.
- (instancetype)initWithReuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithReuseIdentifier:reuseIdentifier];
if (self)
{
NSArray* objects = [[NSBundle mainBundle] loadNibNamed:@"MYTableViewHeaderFooterView"
owner:self
options:nil];
UIView *nibView = [objects firstObject];
UIView *contentView = self.contentView;
CGSize contentViewSize = contentView.frame.size;
nibView.frame = CGRectMake(0, 0, contentViewSize.width, contentViewSize.height);
[contentView addSubview:nibView];
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
d.注册MYTableViewHeaderFooterView类而不是nib文件:
[self.tableView registerClass:[MYTableViewHeaderFooterView class] forHeaderFooterViewReuseIdentifier:@"cell"];
Run Code Online (Sandbox Code Playgroud)
Mar*_*uro 25
我只是用页脚和NIB文件做到了这一点:
UITableViewHeaderFooterView视图的背景颜色设置为" 默认".在UITableViewController viewDidLoad寄存器中,要与重用标识符一起使用的NIB文件:
[self.tableView registerNib:[UINib nibWithNibName:@"CustomFooterView" bundle:nil] forHeaderFooterViewReuseIdentifier:@"Footer"];
Run Code Online (Sandbox Code Playgroud)在你的UITableViewController中tableView:viewForFooterInSection:使用Footer标识符来获取并返回视图:
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
if (section == 2)
return [tableView dequeueReusableHeaderFooterViewWithIdentifier:@"Footer"];
return nil;
}
Run Code Online (Sandbox Code Playgroud)我发现更简单的方法.
1)创建UITableViewCell的子类并设置您的xib文件
2)在头文件中,将UITableViewCell中的超类更改为UITableViewHeaderFooterView
而已.
此解决方案运行良好,特别是如果您希望它与可读内容指南(在iOS 9中引入)相关的正常工作.它不是创建UITableViewHeaderFooterView,而是在需要时返回自定义UIView(来自XIB):
创建一个子类UIView("AwesomeHeaderView")并创建出口的新类:
class AwesomeHeaderView: UIView {
@IBOutlet var myCustomLabel: UILabel!
}
Run Code Online (Sandbox Code Playgroud)在您的UIViewController(或UITableViewController)中调用以下内容:
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
guard let headerView = NSBundle.mainBundle().loadNibNamed("MyNewHeader", owner: nil, options: nil).first as? AwesomeHeaderView else {
return nil
}
// configure header as normal
headerView.backgroundColor = UIColor.redColor()
headerView.myCustomLabel.textColor = UIColor.whiteColor()
headerView.myCustomLabel.text = "Hello"
return header
}
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
25341 次 |
| 最近记录: |