0

セルの画像表示をしたい。しかし、このコードは白いテーブルビューのみを表示します。なぜですか?教えてください。(絵コンテは使用していません。)

TableCell.h

#import <UIKit/UIKit.h>

@interface TableCell : UITableViewCell <UITableViewDelegate,UITableViewDataSource>

@property (nonatomic,retain) UITableView *tableCellView;
@property (nonatomic,retain) NSArray *cellArray;

-(NSString *)reuseIdentifier;

@end

TableCell.m

    #import "TableCell.h"

@implementation TableCell

@synthesize tableCellView;
@synthesize cellArray;


-(NSString *)reuseIdentifier
{
    return @"cell";
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [cellArray count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [self.tableCellView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
    }
    for (UIImageView *view in cell.subviews)
    {
        [view removeFromSuperview];
    }

    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 10, 200, 200)];
    imageView.image = [UIImage imageNamed:[cellArray objectAtIndex:indexPath.row]];
    imageView.contentMode = UIViewContentModeCenter; // 画像サイズを合わせて貼る

    CGAffineTransform rotateImage = CGAffineTransformMakeRotation(M_PI_2); 
    imageView.transform = rotateImage; 

    [cell addSubview:imageView];
    return cell;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{

    return 220;
}

@end

TableViewController.h

    #import <UIKit/UIKit.h>

@class TableCell;

@interface TableViewController : UIViewController <UITableViewDataSource,UITableViewDelegate>

@property (nonatomic, retain) UITableView *tableView;
@property (nonatomic, retain) TableCell *tableViewCell;
@property (nonatomic, retain) NSArray *titlesArray;
@property (nonatomic, retain) NSArray *peopleArray;
@property (nonatomic, retain) NSArray *thingsArray;
@property (nonatomic, retain) NSArray *fruitsArray;
@property (nonatomic, retain) NSArray *arrays;

@end

TableViewController.m

#import "TableViewController.h"
#import "TableCell.h"

@interface TableViewController ()

@end

@implementation TableViewController

@synthesize tableView;
@synthesize tableViewCell;
@synthesize titlesArray;
@synthesize peopleArray;
@synthesize thingsArray;
@synthesize fruitsArray;
@synthesize arrays;

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.tableView.delegate = self;
    self.tableView.dataSource = self;

    tableView = [[UITableView alloc] initWithFrame:[[UIScreen mainScreen] bounds] style:UITableViewStylePlain];
    [self.view addSubview:tableView];

    titlesArray = [[NSArray alloc] initWithObjects:@"People", @"Things", @"Fruits", nil];
    peopleArray = [[NSArray alloc] initWithObjects:@"Gardener.png", @"Plumber.png", @"BusinessWoman.png", @"BusinessMan.png", @"Chef.png", @"Doctor.png", nil];
    thingsArray = [[NSArray alloc] initWithObjects:@"StopWatch.png", @"TrashCan.png", @"Key.png", @"Telephone.png", @"ChalkBoard.png", @"Bucket.png", nil];
    fruitsArray = [[NSArray alloc] initWithObjects:@"Pineapple.png", @"Orange.png", @"Apple.png", nil];

    arrays = [[NSArray alloc] initWithObjects:peopleArray, thingsArray, fruitsArray, nil];
}


- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{

    return [arrays count];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 1;
}

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
    return [titlesArray objectAtIndex:section];
}

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

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    TableCell *cell = (TableCell *)[self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        [[NSBundle mainBundle] loadNibNamed:@"TableViewCell" owner:self options:nil];

        CGAffineTransform rotateTable = CGAffineTransformMakeRotation(-M_PI_2);
        tableViewCell.tableCellView.transform = rotateTable;
        tableViewCell.tableCellView.frame = CGRectMake(0, 0, tableViewCell.tableCellView.frame.size.width, tableViewCell.tableCellView.frame.size.height);

        tableViewCell.cellArray = [arrays objectAtIndex:indexPath.section];

        tableViewCell.tableCellView.allowsSelection = YES;
        cell = tableViewCell;

    }

    return cell;
}

@end

AppDelegate.m

TableViewController *tvc = [[TableViewController alloc] init];
    self.window.rootViewController = tvc;
4

3 に答える 3

0

numberOfSectionsInTableViewメソッドが0を返す場合があります。の値を確認してください[arrays count]。そしてもう1つ、あなたはUITableViewCell適切な方法で作成されていないということです。それも問題かもしれません。カスタムを作成するには、このリンクを確認してくださいUITableViewCell

于 2012-12-13T09:35:22.767 に答える
0

各UITableViewCellは、そのスタイルがデフォルトの場合、画像をサポートしています。

cell.imageView.image = yourImageView.image;

他に何もする必要はありません。

必要に応じて、ImageView設定を変更して画像設定を変更できます。

于 2012-12-13T09:48:48.177 に答える
0

UITableViewCellは、デフォルトですでに画像をサポートしています。サブビューとして新しいUIImageViewを追加する必要はありません...

したがって、これの代わりに:

for (UIImageView *view in cell.subviews)
{
    [view removeFromSuperview];
}

UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 10, 200, 200)];
imageView.image = [UIImage imageNamed:[cellArray objectAtIndex:indexPath.row]];
imageView.contentMode = UIViewContentModeCenter; // 画像サイズを合わせて貼る

CGAffineTransform rotateImage = CGAffineTransformMakeRotation(M_PI_2); 
imageView.transform = rotateImage; 

[cell addSubview:imageView];

これを書いてください:

cell.imageView.image = [UIImage imageNamed:[cellArray objectAtIndex:indexPath.row]];

ああ、私は今、他の多くのものがあなたのコードに間違っていることに気づきました!申し訳ありません。あなたが変更する必要がある他のもの:

  1. このメソッドをTableCellからTableViewControllerにコピーします。- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath既存のメソッドを削除します
  2. TableCellクラスを削除します

あなたもローテーションをしているようですが...今はそれを省いてください。最初にそれを機能させるようにしてから、画像の回転について心配してください。

iOS開発に関する本を読むようにアドバイスしてもらえますか?何をしているのか全くわからないようです:(

しかし、私はあなたを助けるのが好きです。すべてのコードをhttp://www.github.comに置いて、共同編集者として招待してもらえますか?私のユーザー名はtomvanzummerenです。私はあなたのためにこのアプリを動作させることができます。

于 2012-12-13T09:37:40.303 に答える