开发者

how to add more than one image and button in UITableView?

I want to add more than one image in table view.

I can add one image using cell.imageview.image.

but how to add one more image.

And I also want to add buttons in all cells.

How can I d开发者_如何学Goo that ?


You should make your own UITableViewCell subclass. There are many tutorials for that:

  • http://iphone.zcentric.com/2008/08/05/custom-uitableviewcell/
  • http://www.icodeblog.com/2009/05/24/custom-uitableviewcell-using-interface-builder/
  • http://www.e-string.com/content/custom-uitableviewcells-interface-builder

Including:

  • http://stackoverflow.com
  • http://www.google.com


Make your own UITableViewCell subclass.


Use a UITableView with a custom cell with whatever you want in it, load extra images and labels. To get the custom cell, create an IBOutlet to the cell and use this method.

[[NSBundle mainBundle] loadNibNamed:@"customCellView" owner:self options:nil]; To make a cell, make a new Nib/Xib file which is blank, make files owner the class with the cells, drag a UITableviewcell object out and put whatever objects you want on top of that view, set background as clear color and when you load the nib, enter all info into those images and labels. GL


Here is a block of code I use alot in my apps. Its not the fastest way to implement, but it gives you complete control over how the cell looks and whats in it. Using the code below you can see how my app looks. You have 2 buttons on one cell. They both do something different when pushed, and if the actual CELL is selected I do something else. I removed some of the code because im sure you dont care about what Im doing when the cell is selected, only how to get the buttons on, and know which one is pushed.

how to add more than one image and button in UITableView?

-(void)scheduleServiceButtonPressed:(id)sender {

//when the user click the button "service appt" on a table cell, we get the cellRow and use that to identify which car to show
    ServiceApptViewController * vc = (ServiceApptViewController *)[[ServiceApptViewController alloc] init];
    vc.cameFromGarageSelectionInt = [sender tag]; // here is the cell row that was selected.
    [self.navigationController pushViewController:vc animated:YES];
    [vc release];


}


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

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

    return 70;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [app.savedUserVehicleArray count];

}


// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";


    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
        [cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];
    }

    cell = [self getCellContentView:CellIdentifier:indexPath.row];  
    [cell setBackgroundColor:[UIColor redColor]];
    cell.selectionStyle = UITableViewCellSelectionStyleNone;

    NSLog(@"out cells for index");

    return cell;
}

- (UITableViewCell *) getCellContentView:(NSString *)cellIdentifier:(int)cellIndex {

    NSLog(@"in content");

    vehicleForRow = [app.savedUserVehicleArray objectAtIndex:cellIndex];

    //CGRect CellFrame = CGRectMake(0, 0, 300, 60);
    CGRect CellFrame = CGRectMake(0, 0, 320, 70);
    UITableViewCell *cell = [[[UITableViewCell alloc] initWithFrame:CellFrame reuseIdentifier:cellIdentifier] autorelease];


    // put a UIView underneath for coloring
    UIView * view = [[UIView alloc] initWithFrame:CellFrame];

    if ( cellIndex%2 == 0 ){
        view.backgroundColor = [UIColor whiteColor];
    }else{
        //view.backgroundColor = [UIColor colorWithRed:0.98 green:0.92 blue:0.52 alpha:1.0];
        view.backgroundColor = [UIColor colorWithRed:.238 green:.238 blue:0.238 alpha:.10];
    }
    [cell.contentView addSubview:view];
    [view release];


    if (vehicleForRow.isDefault && [vehicleForRow.isDefault compare:@"YES"]==0) {

        //add green check mark if vehicle is default
        UIImageView * bgimage3 = [[UIImageView alloc] initWithFrame:CGRectMake(245, 15, 40, 32)];
        bgimage3.image = [UIImage imageNamed:@"greenCheckMark.png"];
        [cell.contentView addSubview:bgimage3];
        [bgimage3 release];

        //default vehicle label
        UILabel *lblTemp;
        NSString * z = [NSString stringWithFormat:@"Default"];
        NSString * s1 = z;
        CGRect Label1Frame = CGRectMake(240, 43, 250, 25); // name
        lblTemp = [[UILabel alloc] initWithFrame:Label1Frame];
        lblTemp.adjustsFontSizeToFitWidth = TRUE;
        lblTemp.text = s1;
        lblTemp.font = [UIFont boldSystemFontOfSize:12];
        lblTemp.textColor = [UIColor blueColor];
        lblTemp.backgroundColor = [UIColor clearColor];
        [lblTemp setTextAlignment:UITextAlignmentLeft];
        [cell.contentView addSubview:lblTemp];
    }
    else {
        UIImageView * bgimage3 = [[UIImageView alloc] initWithFrame:CGRectMake(250, 15, 30, 24)];
        bgimage3.image = [UIImage imageNamed:@"grayCheckMark.png"];
        [cell.contentView addSubview:bgimage3];
        [bgimage3 release];

        UILabel *lblTemp;
        NSString * z = [NSString stringWithFormat:@"Set As Default"];
        NSString * s1 = z;
        CGRect Label1Frame = CGRectMake(233, 38, 250, 25); // name
        lblTemp = [[UILabel alloc] initWithFrame:Label1Frame];
        lblTemp.adjustsFontSizeToFitWidth = TRUE;
        lblTemp.text = s1;
        lblTemp.font = [UIFont boldSystemFontOfSize:8];
        lblTemp.textColor = [UIColor grayColor];
        lblTemp.backgroundColor = [UIColor clearColor];
        [lblTemp setTextAlignment:UITextAlignmentLeft];
        [cell.contentView addSubview:lblTemp];
    }


    // add service button to each cell
    UIImage *image;
    schedServiceButton = [UIButton buttonWithType:UIButtonTypeCustom];
    image = [UIImage imageNamed:@"tableServiceButton.png"];
    [schedServiceButton setBackgroundImage:image forState:UIControlStateNormal];
    schedServiceButton.frame = CGRectMake(5, 30, 97, 35);
    [schedServiceButton setTag:cellIndex];//this is how we know which cell button was pressed 
    [schedServiceButton addTarget:self action:@selector(scheduleServiceButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
    schedServiceButton.titleLabel.font = [UIFont systemFontOfSize:12];

    [schedServiceButton.titleLabel setLineBreakMode:UILineBreakModeCharacterWrap];
    [schedServiceButton setTitle:@"Schedule\nService Appt." forState:UIControlStateNormal];
    schedServiceButton.titleLabel.textAlignment = UITextAlignmentCenter;


    [cell.contentView addSubview:schedServiceButton];

    //yes add owners manual button
        viewOMButton = [UIButton buttonWithType:UIButtonTypeCustom];
        image = [UIImage imageNamed:@"tableOMButton.png"];
        [viewOMButton setBackgroundImage:image forState:UIControlStateNormal];
        viewOMButton.frame = CGRectMake(105, 30, 97, 35);
        [viewOMButton setTag:cellIndex];
        [viewOMButton addTarget:self action:@selector(viewOwnersManualButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
        viewOMButton.titleLabel.font = [UIFont systemFontOfSize:12];

        [viewOMButton.titleLabel setLineBreakMode:UILineBreakModeCharacterWrap];
        [viewOMButton setTitle:@"View\nOwner's Manual" forState:UIControlStateNormal];
        viewOMButton.titleLabel.textAlignment = UITextAlignmentCenter;


        [cell.contentView addSubview:viewOMButton];




    //car description label
    UILabel *lblTemp;
    NSString * z = [NSString stringWithFormat:@"%@ %@ %@",vehicleForRow.userVehicleYear,vehicleForRow.userVehicleMake,vehicleForRow.userVehicleModel];
    NSString * s1 = z;
    CGRect Label1Frame = CGRectMake(10, 5, 250, 25); // name
    //Initialize Label with tag 1.
    lblTemp = [[UILabel alloc] initWithFrame:Label1Frame];
    lblTemp.adjustsFontSizeToFitWidth = TRUE;
    lblTemp.text = s1;
    lblTemp.font = [UIFont boldSystemFontOfSize:16];
    lblTemp.textColor = [UIColor blueColor];
    lblTemp.backgroundColor = [UIColor clearColor];
    [lblTemp setTextAlignment:UITextAlignmentLeft];
    [cell.contentView addSubview:lblTemp];



    return cell;

}




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


}



- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {


}
0

上一篇:

下一篇:

精彩评论

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

最新问答

问答排行榜