我以编程方式创建一个UITableView并将其添加到UIView:
EDIT1
- (void)viewDidLoad
{
[super viewDidLoad];
previewTableView = [[UITableView
alloc]initWithFrame:CGRectMake(self.previewView.frame.origin.x,
self.previewView.frame.origin.y,
self.previewView.frame.size.width,
self.previewView.frame.size.height
)];
previewTableView.delegate = self;
previewTableView.dataSource = self;
previewTableView.tag = 1;
[self.previewView addSubview:previewTableView];
}
使用XIB创建previewView。
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:
(NSIndexPath *)indexPath
{
NSLog(@"Height for row %d",tableView.tag);
if (tableView.tag == 1)
{
CGFloat height=((UIImage*)[images objectAtIndex:indexPath.row]).size.height;
NSLog(@"section: %i, image height: %f",indexPath.section,height);
return height;
}
return 80;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (tableView.tag == 1)
return [images count];
return 10;
}
-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"tag = %d",tableView.tag);
if (tableView.tag == 1)
{
NSLog(@"indexpath images %d %d",indexPath.row,[images count]);
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
if(cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];
}
if ([images count] > [indexPath row])
return cell;
[cell.contentView addSubview:[images objectAtIndex:[indexPath row]]];
[cell.contentView sizeToFit];
return cell;
}
未显示该表(没有滚动,没有行...空白视图)。实际上,NSLog没有被调用。 (图片包含2个项目)。 任何消化?
答案 0 :(得分:3)
您必须在以编程方式创建时为tableview指定框架。 例如:
tab2 = [[UITableView alloc]initWithFrame:CGRectMake(0, 540, 768, 600)];
如果你想让桌子全屏占用。
tab = [[UITableView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame] style:UITableViewStylePlain];
答案 1 :(得分:2)
而不是
previewTableView = [[UITableView alloc] init];
使用:
previewTableView = [[UITableView alloc] initWithFrame:CGRectMake(101, 45, 100, 416)];
您的numberOfRows必须返回0以上。