在ios 5中更改tableview行高

时间:2011-10-14 00:41:47

标签: uitableview ios5

在ios 5之前,我会在这样的tableview中设置行高:

self.tableView.rowHeight=71;

但是,它在iOS5上不起作用。

有人有想法吗?

由于

4 个答案:

答案 0 :(得分:18)

您是否尝试过tableView:heightForRowAtIndexPath:的{​​{1}}?

您可以在UITableViewDelegate代表(支持tableView:heightForRowAtIndexPath:协议的代理人)中实施UITableView,将行高设置为71.

UITableViewDelegate

首先,您应该设置tableView的委托。代表应符合- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return 71.0; } 协议。假设我们有一个UITableViewDelegate类。为了符合TableDelegate协议,应该在它的声明中将它放在方括号中:

UITableViewDelegate

然后设置委托:

...    
@interface TableDelegate : UIViewController <UITableViewDelegate>
...
or
@interface TableDelegate : UIViewController <some_other_protocol, UITableViewDelegate>

最后,您应该在... // create one first TableDelegate* tableDelegate = [[TableDelegate alloc] init]; ... self.tableView.delegate = tableDelegate; 实施中实施tableView:heightForRowAtIndexPath:方法:

TableDelegate

的rowHeight

只是澄清一点,使用@implementation TableDelegate ... - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return 71.0; } ... @end 应该可以正常工作,并且比rowHeight返回的常量更好,正如Javier Soto在评论中指出的那样。另请注意,如果您的UITableView在-tableView:heightForRowAtIndexPath:-tableView:heightForRowAtIndexPath:属性集中具有委托返回高度,则会接受先前值。

答案 1 :(得分:3)

我为iOS 5编码,它确实有效。您只需要实现您在以下所述的行:

 - (void)viewDidLoad

之后的

方法

[super viewDidLoad];

在:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
如果TableView为空,

方法不起作用。但是如果使用rowHeight属性,即使视图为空,它也会起作用。

答案 2 :(得分:1)

此方法更改行的高度

-(CGFloat)tableView:(UITableView*)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath
{
    return  51.0f
};

答案 3 :(得分:0)

尝试在 rowHeight之前设置viewWillAppear: ,例如在创建表格视图后立即。

这使它适用于iOS 5.在iOS 6上它更容易:你可以在任何地方设置它。

正如其他人所指出的,使用rowHeight的优势在于您可以避免tableView:heightForRowAtIndexPath:对性能的影响。