1

如何UITableViewController从子类中访问参数UITableViewCell

我在UITableViewController字体大小中有一个参数(即用户可以更改字体大小)。因此layoutSubviews,我的自定义子类中的方法在UITableViewCell需要重新布局自身时需要访问最新的字体(因为它的标签位置将取决于字体)。

所以我的问题是,从我的自定义子类UITableViewCell,特别是在layoutSubviews方法中,我如何访问作为实例变量的“uiFont”参数UITableViewController

4

2 回答 2

4

有几种方法可以做到这一点:通过应用程序委托上的属性访问 UITableViewController(您可以从任何地方使用 访问[UIApplication sharedApplication].delegate),在创建单元格时为单元格提供对 UITableViewController 的引用tableView:cellForRowAtIndexPath:,或者遵循 UIResponder 链中的单元格视图,直到找到 UITableViewController。

但实际上,这可能是一个糟糕的架构。您可能应该只调用reloadData表格视图以使其重新创建所有单元格,并将字体设置为tableView:cellForRowAtIndexPath:. 或者,如果字体设置应该保持不变,您可以将其存储在 NSUserDefaults 中并让单元格监听NSUserDefaultsDidChangeNotification.

于 2011-03-14T01:31:18.580 回答
2

就设计而言,从单元格内访问UITableViewController对象并不是一个好方法。您应该做的是在表格单元格本身中创建一个 ivar 来存储UIFont对象:

@interface CustomCell : UITableViewCell {
    UIFont *font;
}
@property (nonatomic, retain) UIFont *font;

然后在您的tableView:cellForRowAtIndexPath方法中,设置单元格的字体:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    ...
    [cell setFont:uiFont];
    ...
}
于 2011-03-14T01:27:39.800 回答