开发者

UITableView - problem when selected

开发者 https://www.devze.com 2023-03-12 01:45 出处:网络
Hi again! I have problem when select single cell. If my single cell a selected - my subview UIButton is highlighted too. What to do?

Hi again! I have problem when select single cell. If my single cell a selected - my subview UIButton is highlighted too. What to do?

Thanks all!

This my code:

//
//  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_on开发者_开发百科e_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


  • (UIButton *)thumbnailsView:(CGRect)frame{

    UIButton *myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    [myButton setFrame:frame];

    [myButton addTarget:self action:@selector(urfunctionName) forControlEvents:UIControlEventTouchUpInside];

    return myButton;

} declare this function in .h

-(void)urfunctionName;

-(void)urfunctionName{

}

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

[tableView deselectRowAtIndexPath:indexPath animated:NO];



    //here call ur buton function

[self urfunctionName];

}


There is a property adjustImageWhenHighlighted which is simply

"A Boolean value that determines whether the image changes when the button is highlighted."

Straight from the library. You can set that to NO for your UIButton in your selectedRow method, and if your action for that button is being accessed, you can set that in there too following @madhu's instructions on setting up the action when it is touched.

Haven't actually tried it, since usually when I have a custom UITableViewCell, I simply subclass it and add all subviews in that subclass.

Also, remember to release allocations.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号