UITableView - проблема при выборе - PullRequest
1 голос
/ 07 июня 2011

Привет еще раз! У меня проблема при выборе одной ячейки.Если моя отдельная ячейка выбрана - моя подпредставление UIButton тоже подсвечивается.Что делать?

Спасибо всем!

Это мой код:

//
//  ThumbnailsBrowser.m
//  PHOTO_VIDEO
//
//  Created by dev on 07.06.11.
//  Copyright 2011 __MyCompanyName__. All rights reserved.
//

#define COUNT 3             //  Total number of elements in a single cell.
#define SPINNER_SIZE 20     //  Size of spinner in a single cell.
#define THUMBNAIL_SIZE 200  //  Size of thumbnail in a single cell.
#define CELL_SIZE 300       //  Size of single cell in a table view.

#import "ThumbnailsBrowser.h"

@implementation ThumbnailsBrowser

- (void)sharedDelegate{
    [self setDelegate:self];
    [self setDataSource:self];
}

- (void)initWithThumbnailsUrl:(NSMutableArray *)url{

}


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


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

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

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

    static NSString *CellIdentifier = @"Thumbnails";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];

        for(NSInteger i = 0; i < COUNT; i++){

            // Calculate spinner.
            float size_one_section = (self.frame.size.width / COUNT);
            float size_center_object = size_one_section / 2;
            float init_coord_object = size_center_object - (SPINNER_SIZE / 2);        
            float center_object_y = CELL_SIZE / 2 - (SPINNER_SIZE / 2);        
            [cell.contentView addSubview:[self activityIndicatorView:CGRectMake(init_coord_object + i * size_one_section, center_object_y, SPINNER_SIZE, SPINNER_SIZE)]];

            // Calculate thumbnails.
            float init_coord_objectT = size_center_object - (THUMBNAIL_SIZE / 2);        
            float center_object_yT = CELL_SIZE / 2 - (THUMBNAIL_SIZE / 2);        
            [cell.contentView addSubview:[self thumbnailsView:CGRectMake(init_coord_objectT + i * size_one_section, center_object_yT, THUMBNAIL_SIZE, THUMBNAIL_SIZE)]];

        }

        // Set selected cell color. 
        UIView *bgColorView = [[UIView alloc] init];
        [bgColorView setBackgroundColor:[UIColor blackColor]];
        [cell setSelectedBackgroundView:bgColorView];
        [bgColorView release];

    }

    return cell;

}


- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {   

}

//  Create UIActivityIndicatorView and return to cell table view.
- (UIActivityIndicatorView *)activityIndicatorView:(CGRect)frame{    

    UIActivityIndicatorView * spinner =
    [[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite] autorelease];
    [spinner setFrame:frame];
    [spinner startAnimating];    
    return spinner;

}

//  Create thumbnails view.
- (UIButton *)thumbnailsView:(CGRect)frame{

    UIButton *myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [myButton setFrame:frame];
    return myButton;

}

@end

Ответы [ 2 ]

1 голос
/ 07 июня 2011

Существует свойство adjustImageWhenHighlighted, которое просто

"Логическое значение, определяющее, изменяется ли изображение при выделении кнопки."

Прямо из библиотеки.Вы можете установить его на NO для вашего UIButton в методе selectedRow, и если к вашему действию для этой кнопки обращаются, вы также можете установить его там, следуя инструкциям @ madhu по настройке действия при касании.

На самом деле не пробовал, так как обычно, когда у меня есть пользовательский UITableViewCell, я просто делаю его на подклассы и добавляю все подпредставления в этом подклассе.

Кроме того, не забудьте освободить ассигнования.

1 голос
/ 07 июня 2011
  • (UIButton *) thumbnailsView: (CGRect) frame {

    UIButton * myButton = [UIButton buttonWithType: UIButtonTypeRoundedRect];

    [myButton setFrame: frame];

    [myButton addTarget: собственное действие: @selector (urfunctionName) forControlEvents: UIControlEventTouchUpInside];

    return myButton;

} объявить эту функцию в.h

- (void) urfunctionName;

- (void) urfunctionName {

}

- (void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath {

[tableView deselectRowAtIndexPath:indexPath animated:NO];



    //here call ur buton function

[self urfunctionName];

}

...