我需要显示一个UILabel文本,它有两种不同的样式(不同的颜色,文本的部分粗体).使用attributedText属性可以很容易地解决这个问题.
我的问题是文本可能会或可能不会长于我可以放在标签中的内容.使用纯文本时,一切都按我想要的方式工作.文本是自动换行以适合标签中的行数,如果/当文本比标签中显示的长时,则尾部被截断.
当我切换到使用attributedText时,我只能在尾部截断和自动换行之间进行选择.如果我希望尾部被截断,那么标签只会呈现带有截尾的单行(即使它可以适合10行).如果我选择自动换行,那么尾部不会被截断,但是不能显示标签中不适合的行.
我的内容字符串不包含任何换行符,它只是一个长字符串.
所以我一直在考虑使用UITableView's registerNib:和[dequeueReusableCellWithIdentifier: forIndexPath:]加载一个自定义UITableCellView的一个NIB.以下是我的控制器的重要部分:
- (void)viewDidLoad
[super viewDidLoad];
self.tableView.bounces = NO;
[self.tableView registerNib:[UINib nibWithNibName:@"ProgramListViewCell" bundle:nil] forCellReuseIdentifier:@"Cell"];
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
TVProgramListTableViewCell *cell = (TVProgramListTableViewCell *)[tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
cell.frame = CGRectMake(0, 0, CELLWIDTH, OPENCELLHEIGHT);
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.clipsToBounds = YES;
cell.titleLabel.text = [NSString stringWithFormat:@"herpa derp: %i", indexPath.row];
return cell;
Run Code Online (Sandbox Code Playgroud)
所以我正在注册NIB视图加载时,然后将其用于单元格出列.到目前为止,一切都像我期望的那样工作.我的自定义TVProgramListTableViewCell正在从中正确加载NIB并且IBOutlet正在连接.
它NIB包含一个带有按钮的视图,我想向控制器发出激活事件.我可以将文件的所有者类型设置为我的表视图控制器类,但我不知道如何实际连接文件的所有者.
现在,如果我正在使用loadNibNamed:,并加载NIB自己,连接文件的所有者将很容易.有没有办法在利用时实现这一目标registerNib?除了无法连接文件所有者之外,这似乎是使用自定义单元格的完美方式UITableView.