Добавить изображения значков в массив UITableview - PullRequest
1 голос
/ 07 февраля 2012

Я хотел бы добавить другое изображение значка, например image1.png, image2.png и т. Д., В следующий массив UITableview.Действительно нужна помощь кого-то.Заранее спасибо.

{
self = [super init];
if (self) {
    // Custom initialization
    self.tableData = [NSArray arrayWithObjects:@"Region", @"Subregion", @"Country",      @"County", @"City", @"District", nil];

    CGRect frame = self.view.bounds;
    frame.size.height -= 100;
    self.tableView = [[UITableView alloc] initWithFrame:frame style:UITableViewStyleGrouped];
    [self.tableView setBackgroundColor:[UIColor clearColor]];
    [self.tableView setDataSource:self];
    [self.tableView setDelegate:self];
    [self.tableView setScrollEnabled:NO];

    [self.view addSubview:self.tableView]; 
}
return self;
}

Ответы [ 3 ]

4 голосов
/ 07 февраля 2012

Вы можете создать другой массив, в котором будут храниться имена картинок

self.tablePicture = [NSArray arrayWithObjects:@"pic1.png", @"pic2.png", @"Country.png", nil];

в том порядке, в котором вы хотите, чтобы они отображались, и в cellForRowAtIndexPath просто напишите

cell.imageView.image = [UIImage imageNamed:[tablePicture objectAtIndex:indexPath.row]];
4 голосов
/ 07 февраля 2012

Использовать cellForRowAtIndexPath:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    }

    // Configure the cell.
    cell.textLabel.text = @"cell text";
    cell.imageView.image = [UIImage imageNamed:@"image1.png"];
    return cell;
}
1 голос
/ 07 февраля 2012

Вы можете воспользоваться стилем oop, создав собственный класс (скажем, DataItem), и инициализировать отображаемый массив элементами DataItem.Другими словами, вы могли бы создать модель, содержащую элементы name и image.

Например:

//.h
@interface DataItem : NSObject
{
   NSString* name;
   NSString* thunbmail;
}

@property (nonatomic, copy) NSString* name;
@property (nonatomic, copy) NSString* thunbmail;

- (id)initWithName:(NSString*)dName withThunbmail:(NSString*)dThunbmail;

@end

//.m
@implementation DataItem

@synthesize name;
@synthesize thunbmail;

- (id)initWithName:(NSString*)dName withThunbmail:(NSString*)dThunbmail
{
   if(self = [super init])
   {
      name = [dName copy]; // release in dealloc!!
      thunbmail = [dThunbmail copy]; // release in dealloc!!
   }
   return self;
}

// create dealloc here

@end

теперь вы можете инициализировать подобный элемент и добавить его в массив (может быть лучше иметь NSMutableArray), например:

DataItem* di = [[DataItem alloc] initWithName:@"name" withThunbmail:@"image.png"];

NSMutableArray* arrData = [[NSMutableArray alloc] init];
[arrData addObject:di];

// add other object here

self.tableData = arrData;

// release memory...

, а затем в cellForRowAtIndexPath

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    }

    // Configure the cell..

    DataItem* di = (DataItem*)[self.tableData objectAtIndex:[indexPath row]];
    cell.textLabel.text = di.name;
    cell.imageView.image = [UIImage imageNamed:di.thunbmail];

    return cell;
}

Это элегантный способ заключить ваш контент в одинМодель класса.

Надеюсь, это поможет.

PS Проверьте код.Я написал от руки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...