0

プログラムで UITableView を作成し、UIView に追加します。

編集1

- (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];
}

previewView は XIB で作成されます。

-(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つのアイテムが含まれています)。任意のsyggestion?

4

2 に答える 2

3

プログラムで作成するときに、テーブルビューのフレームを指定する必要があります。元:

tab2 = [[UITableView alloc]initWithFrame:CGRectMake(0, 540, 768, 600)];

テーブルを全画面表示にしたい場合。

tab = [[UITableView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame] style:UITableViewStylePlain];
于 2013-09-12T12:38:20.817 に答える
2

それ以外の

previewTableView = [[UITableView alloc] init]; 

使用する:

previewTableView = [[UITableView alloc] initWithFrame:CGRectMake(101, 45, 100, 416)];

numberOfRows は 0 より大きい値を返す必要があります。

于 2013-09-12T12:38:27.273 に答える