как установить изображение на ячейку через тумблер в iphone - PullRequest
0 голосов
/ 28 ноября 2011

Привет! Я пробую этот код, но он не показывает изображение в ячейке, где я ошибаюсь. Я хочу, когда я щелкаю каждую ячейку, затем хочу отображать изображение, или когда я прокручиваю ячейку, изображение не исчезает, оно должно появиться в той ячейке, которую я использую.этот код, но он не работает, пожалуйста, помогите мне в этом.


@interface imageclass : UITableViewController
{

    BOOL changeimagetype;
    //UIImage *btnImage;
    UIButton *mimageButton;
    UIImageView *onButtonView;

}

@property (nonatomic,retain)UIImageView *onButtonView;
@property BOOL changeimagetype;
@property (nonatomic,retain)UIButton *mimageButton;

-(void)changeMapType:(id)sender;
@end

#import "imageclass.h"


@implementation imageclass
@synthesize onButtonView,changeimagetype,mimageButton;



-(void)changeMapType:(id)sender
{
    changeimagetype =!changeimagetype;
    if(changeimagetype == YES)
    {
        //[typechange setImage:[UIImage imageNamed:@"map.png"] forState:UIControlStateNormal];
        //self.myGreatMapView.mapType = MKMapTypeStandard;
        onButtonView.image = [UIImage imageNamed:@"alarm_OF.png"];
        [mimageButton setImage:onButtonView.image forState:UIControlStateNormal];
        //someBarButtonItem.image = [UIImage imageNamed:@"alarm_ON..png"];
        //changeimagetype =NO;
    }
    else
    {
        //self.myGreatMapView.mapType = MKMapTypeSatellite;     
        onButtonView.image = [UIImage imageNamed:@"alarm_ON.png"];
        [mimageButton setImage:onButtonView.image forState:UIControlStateNormal];
    }

}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

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


    mimageButton = [UIButton buttonWithType:UIButtonTypeCustom];
    mimageButton.frame=CGRectMake(10, 10, 30, 50);
    mimageButton.tag = 1;               

    onButtonView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 30, 50)];
    onButtonView.tag = 2;
    onButtonView.image = [UIImage imageNamed:@"alarm_ON.png"];
    [mimageButton setBackgroundImage:[onButtonView.image stretchableImageWithLeftCapWidth:0.0 topCapHeight:0.0] forState:UIControlStateNormal];
    [cell.contentView addSubview:mimageButton];
    [mimageButton addTarget:self action:@selector(changeMapType:) forControlEvents: UIControlEventTouchUpInside];
    [onButtonView release];

    // Configure the cell...

    return cell;
}

Ответы [ 3 ]

1 голос
/ 28 ноября 2011

Определите свой делегат табличного представления следующим образом.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    mimageButton = [UIButton buttonWithType:UIButtonTypeCustom];
    mimageButton.frame=CGRectMake(10, 10, 30, 50);
    mimageButton.tag = 1;               

    onButtonView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 30, 50)];
    onButtonView.tag = 2;
    onButtonView.image = [UIImage imageNamed:@"alarm_ON.png"];
    [mimageButton setBackgroundImage:[onButtonView.image stretchableImageWithLeftCapWidth:0.0 topCapHeight:0.0] forState:UIControlStateNormal];
    [cell.contentView addSubview:mimageButton];
    [mimageButton addTarget:self action:@selector(changeMapType:) forControlEvents: UIControlEventTouchUpInside];
    [onButtonView release];
    }
    // Configure the cell...

    return cell;
}
0 голосов
/ 28 ноября 2011

Вот код: - Добавьте это в метод cellForRowAtIndexPath.А также установите переменную флага в вашем целевом методе для кнопки переключения.

 if(flagButton)
{
    onButtonView.image = [UIImage imageNamed:@"alarm_ON.png"];
}
else
{
     onButtonView.image = [UIImage imageNamed:@"alarm_OFF.png"];
}
0 голосов
/ 28 ноября 2011

Я попробовал этот другой подход, и он работал. При настройке кнопки

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
mimageButton = [UIButton buttonWithType:UIButtonTypeCustom];
mimageButton.frame=CGRectMake(10, 10, 30, 50);
mimageButton.tag = 1;               
[tempButton setImage:[UIImage imageNamed:@"alarm_ON.png"] forState:UIControlStateNormal];
[tempButton setImage:[UIImage imageNamed:@"alarm_OF.png"] forState:UIControlStateSelected];
[cell.contentView addSubview:mimageButton];
[mimageButton addTarget:self action:@selector(changeMapType:) forControlEvents: UIControlEventTouchUpInside];

}
// Configure the cell...

return cell;

}

А в changeMapType: метод,

-(void)changeMapType:(id)sender{
    changeimagetype =!changeimagetype;
    sender.selected = changeimagetype;
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...