相关疑难解决方法(0)

Iphone - 当每个单元格高度是动态时,何时计算tableview的heightForRowAtIndexPath?

我已经多次看过这个问题,但令人惊讶的是,我没有看到一致的答案,所以我会自己尝试一下:

如果你有一个包含你自己的自定义UITableViewCells的tableview,它包含UITextViews和UILabels,其高度必须在运行时确定,你应该如何确定heightForRowAtIndexPath中每一行的高度?

最明显的第一个想法是通过计算并然后对cellForRowAtIndexPath内单元格内每个视图的高度求和来计算每个单元格的高度,并存储该最终总高度以供以后检索.

但这不起作用,因为cellForRowAtIndexPath被称为AFTER heightForRowAtIndexPath.

我唯一能想到的是在viewDidLoad中进行所有计算,然后创建所有UITableViewCells,计算单元格高度并将其存储在UITableViewCell子类内的自定义字段中,并将每个单元格放在NSMutableDictionary中,其中indexPath为键,然后使用cellForRowAtIndexPath和heightForRowAtIndexPath中的indexPath从字典中检索单元格,返回自定义高度值或单元格对象本身.

这种方法似乎是错误的,因为它没有使用dequeueReusableCellWithIdentifier,而是我将所有单元格一次加载到我的控制器中的字典中,并且委托方法只是从字典中检索正确的单元格.

我没有看到任何其他方法来做到这一点.这是一个坏主意 - 如果是这样,这样做的正确方法是什么?

uitableview reloaddata ios heightforrowatindexpath

42
推荐指数
4
解决办法
2万
查看次数

IOS:使用自定义uitableviewcell的动态高度

我是ios开发的新手,到目前为止这是我的问题.我能够通过委托"heightForRowAtIndexPath"动态计算自定义单元格的高度.所以在第一次加载时,每件东西都显示得很好.

我的问题是,一旦我开始滚动,一切都搞砸了.我认为在滚动"heightForRowAtIndexPath"时,不再调用每个单元格来显示屏幕,因此无法计算新的单元格高度.

所以我已经被困在这里一段时间了.我想知道你们中是否有人可以伸出援助之手.先感谢您.

我会将代码发布到相关文件中.这些文件包括自定义单元格h和m文件.以及视图控制器m文件的相关功能.

// ######################################################
// HelpTableViewCell.h
#import <UIKit/UIKit.h>

@interface HelpTableViewCell : UITableViewCell  {
  IBOutlet UILabel *labelName;
  IBOutlet UILabel *labelDescription;

  IBOutlet UIView *viewBackground;
}

@property (nonatomic, retain) UILabel *labelName;
@property (nonatomic, retain) UILabel *labelDescription;

@property (nonatomic, retain) UIView *viewBackground;

@end

// ######################################################
// HelpTableViewCell.m
#import "HelpTableViewCell.h"

@implementation HelpTableViewCell

@synthesize labelName;
@synthesize labelDescription;

@synthesize viewBackground;

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
  self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];

  if (self) {
  }

  return self;
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated  {

  self.labelName.lineBreakMode = UILineBreakModeWordWrap;
  self.labelName.numberOfLines …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c uitableview ios4 ios

10
推荐指数
1
解决办法
2万
查看次数

添加子视图后,UITableViewCell contentView帧大小会自动增加

添加子视图后,UITableViewCell contentView帧大小会自动增加吗?

假设你:

  • 在UITableViewCell内容视图中添加一些子视图(例如UILabel)
  • 然后使用label.frame = CGRectMake(...方法)设置UILabel大小/位置
  • 然后是UITableViewCell的框架大小自动更改以适应这一点 - 即如果你去tableViewCell.contentView.frame.size.height这应该是只适合子视图所需的总高度?

iphone uitableview ios

2
推荐指数
1
解决办法
3446
查看次数