2011-06-07 35 views
1

再次嗨!我在选择单个单元时遇到问题。如果我的单个单元格被选中 - 我的子视图UIButton也被突出显示。该怎么办?UITableView - 选择时出现问题

谢谢大家!

此我的代码:

// 
// 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 

回答

1
  • (的UIButton *)thumbnailsView:(的CGRect)帧{

    的UIButton * myButton的= [UIButton的buttonWithType:UIButtonTypeRoundedRect];

    [myButton setFrame:frame];

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

    return myButton;

} 声明此功能中.H

- (无效)urfunctionName;

- (无效)urfunctionName {

}

- (无效)的tableView:(UITableView的*)的tableView didSelectRowAtIndexPath方法:(NSIndexPath *)indexPath {

[tableView deselectRowAtIndexPath:indexPath animated:NO]; 



    //here call ur buton function 

[self urfunctionName]; 

}

+0

谢谢!但是当我选择单元格时,我的UIButton也突出显示。如何调用方法禁用突出显示UIButton? – 2011-06-07 15:48:17

+0

adjustImageWhen显示为yes – 2011-06-08 08:46:38

1

有一个属性adjustImageWhenHighlighted这简直就是

“一个布尔值,用于确定当按钮高亮显示时图像是否更改。”

直接从图书馆。您可以在您的selectedRow方法中将您的UIButton设置为NO,如果您正在访问该按钮的动作,您可以在@ madhu的设置动作时设置该动作。

实际上并没有尝试过它,因为通常当我有一个自定义的UITableViewCell时,我只是将其子类化并在该子类中添加所有子视图。

此外,请记住释放分配。