2011-12-03 35 views
0

enter image description here如何使UITableView像下图一样?

如何使UITableView像上面的图像?我知道这是分组表类型。但我们如何将图像+标签+按钮添加到节的标题。

我已经试过

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 

,但它与CGRectMake(0,0,320,height)开始。

我想就像在图像中的部分和确切的部分宽度。

在此先感谢。

回答

0

CustomCell.h

#import <UIKit/UIKit.h> 

@interface CustomCell : UITableViewCell{ 
    id delegate; 
    NSIndexPath *indexpath; 
} 
@property(nonatomic,assign) id delegate; 
@property(nonatomic,retain)NSIndexPath *indexpath; 
@property(nonatomic,retain) IBOutlet UIToolbar *Toolbar; 


-(IBAction)SelectorLeft:(id)sender; 
-(IBAction)SelectorRight:(id)sender; 
@end 

customcell.m

#import "CustomCell.h" 
#import <QuartzCore/QuartzCore.h> 
@implementation CustomCell 
@synthesize Toolbar; 
@synthesize delegate,indexpath; 
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier 
{ 
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; 
    if (self) { 
     // Initialization code 
    } 
    return self; 
} 
-(IBAction)SelectorLeft:(id)sender{ 
    [delegate perfromselector:@selector(left:) withObject:indexpath]; 
} 
-(IBAction)SelectorRight:(id)sender{ 
    [delegate perfromselector:@selector(left:) withObject:indexpath]; 
} 
- (void)setSelected:(BOOL)selected animated:(BOOL)animated 
{ 
    [super setSelected:selected animated:animated]; 

    // Configure the view for the selected state 
} 

@end 

UItbaleView部分

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 
    static NSString *identifier = @"identifier"; 
    NSUInteger row = [indexPath row]; 

    if (row == 0) { 
     CustomCell *cell = (CustomCell*)[tableView dequeueReusableCellWithIdentifier:identifier]; 
     if (cell == nil) { 
      self.Cell = nil; 
      [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil]; 
      cell = self.Cell; 
     } 
     cell.Toolbar.clipsToBounds=YES; 
     CALayer *l=cell.Toolbar.layer; 
      // set corner radious 
     [l setCornerRadius:10]; 
      // to apply border on corners 
     [l setBorderColor:[[UIColor clearColor] CGColor]]; 
      // to apply set border width. 
     [l setBorderWidth:5.0]; 

     return cell; 
    }else{ 
     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier]; 
     if (cell == nil) { 
      cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier] autorelease]; 
     } 
     cell.textLabel.text = [NSString stringWithFormat: @"cell %i",row]; 
cell.delegate = self; 
cell.indexpath = indexpath; 
     return cell; 

    } 
    return nil; 
} 

也不要忘记创建Customcell.xib并通过界面生成器中添加工具栏 也tableview中类中创建CustomCell的出口和处理它作为

0
its easy all what you have to 

    -(UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 
     NSUInteger row = [indexPath row]; 
     if (row % 2 == 0) { 
      static NSString *identifier = @"RowOne"; 
      UITableViewCell *cell = (RowTypeOne*)[tableView dequeueReusableCellWithIdentifier:identifier]; 
      if (cell == nil) { 
      cell = [UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault]autorelease]; 
      } 
      cell.Title.text = [datasource objectatindex:row]; 
      cell.Title.font = [UIFont fontWithName:@"Tahoma" size:16]; 
cell.contentView.backgroundColor = [UIColor redColor]; 
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
cell.textLabel.textAlignment = UITextAlignmentRight; 
      return cell; 
     }else if (row % 2 == 1) { 
      static NSString *identifier = @"RowTwo"; 
      UITableViewCell *cell = (RowTypeOne*)[tableView dequeueReusableCellWithIdentifier:identifier]; 
      if (cell == nil) { 
      cell = [UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault]autorelease]; 
      } 
cell.contentView.backgroundColor = [UIColor redColor]; 
      cell.Title.text = [datasource objectatindex:row]; 
      cell.Title.font = [UIFont fontWithName:@"Tahoma" size:16]; 
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
cell.textLabel.textAlignment = UITextAlignmentRight; 
      return cell; 
     } 
     return nil; 
    } 
+0

排%以上2 == 0将使每个单元格的颜色增加一个,然后您可以更改[uicolor redcoloer]以获取所需的颜色... –

+0

哥们儿忘了为第一行添加代码(右边有按钮的黑色行)。这是该部分的第一行。 – samfisher

+0

感谢您的回复,但您误解了我的问题。您可以在图像中看到部分0启动时的第一行棕色图像,并在右侧标有“短信列表”和“新建”按钮。我要这个。 – iDilip

2

,而不是试图改变节头视图,您可能希望创建一个自定义单元格用棕色背景,一个标签和一个按钮,并使用它的第一行。所以,在-cellForRowAtIndexPath,你可以不喜欢

if (0 == indexPath.row) { 
    return brownCell; 
} else { 
    return normalCell; 
} 

有几种方法来创建自定义的细胞,我总是从Table View Programming Guide for iOS开始。

0
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{ 
     //create btn left each on handeled by selector 
    UIBarButtonItem *btnleft = [[UIBarButtonItem alloc] initWithTitle:@"List of sms" style:UIBarButtonItemStylePlain target:self action:@selector(ListClicked:)]; 
    //create btn right each on handeled by selector 
    UIBarButtonItem *btnright = [[UIBarButtonItem alloc] initWithTitle:@"New" style:UIBarButtonItemStyleBordered target:self action:@selector(NewClicked:)]; 
     //create uitoolbar then add btns to it as list of array 
    UIToolbar *tool = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)]; 
     //change style of toolbar to be black 
    [tool setBarStyle:UIBarStyleBlack]; 
    tool.items = [NSArray arrayWithObjects:btnleft,[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],btnright, nil]; 

     //this is the parent view that we will add on it the uitoolbar objects and the buttons 
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)]; 
    [view autorelease]; 
    [view addSubview:tool]; 

    return view; 
} 
-(void)ListClicked:(id)sender{ 
     //handle here btn left 
} 
-(void)NewClicked:(id)sender{ 
    //handle here btn right 
} 
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{ 
    return 44; 
} 

,如果你想在细胞不被你可以在cellforrow在指数路径检查第一行头...... 此外,如果你想这样做的另一种风格,你可以自定义单元格,并添加它也给的cellForRowAtIndexPath

相关问题