如何从子类UITableViewController
中访问UITableViewCell
参数?
我在UITableViewController
中有一个参数用于字体大小(即用户可以更改字体大小)。因此,我的自定义子类layoutSubviews
中的UITableViewCell
方法需要在需要重新布局时访问最新字体(因为标签位置将取决于字体)。
所以我的问题是,从我的自定义子类UITableViewCell
开始,特别是在layoutSubviews
方法中,如何访问“uiFont”参数,该参数是UITableViewController
的实例变量?
答案 0 :(得分:4)
有几种方法可以做到这一点:通过应用程序委托上的属性访问UITableViewController(可以使用[UIApplication sharedApplication].delegate
从任何地方访问),在创建它时为单元格提供对UITableViewController的引用tableView:cellForRowAtIndexPath:
,或者从单元格视图中关注UIResponder链,直到找到UITableViewController。
但实际上,这可能是一个糟糕的架构。您可能只需在表视图上调用reloadData
以重新创建所有单元格,并在tableView:cellForRowAtIndexPath:
中设置字体。或者,如果字体设置应该保留,您可以将其存储在NSUserDefaults中并让单元格监听NSUserDefaultsDidChangeNotification
。
答案 1 :(得分: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];
...
}