Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
171 views
in Technique[技术] by (71.8m points)

objective c - Edit mode with Custom Cells

I've build a custom cell with IB, and display it on a tableView, that doesn't cover the whole window. I set up a toolbar and gave it a button, which toggles the isEditing attribute and the buttons title. I also made the if(!self.editing) in the didSelectRowAtIndexPath.

I get the feedback, that when the button is hit, I am in editing mode, but my custom cells don't show the delete-sign on the left. If I swipe a cell, the Delete button on the right appears, but the App crashes, if I push that button, but I'll address that later on, just thought I'd say this, in case that leads you to the mistake I made..

I've read, that it may happens that it doesn't display the lefthanded delete sign, if I don't assign my custom cell to the cell.contentview in cellforRowAtIndexPath. I tried, and got an error.

The code in cellForRowAtIndexPath, where I assign the custom cell:

static NSString *CellIdentifier = @"CustomCell";    
CustomCell *cell = (CustomCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {        
    NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];        
    for (id currentObject in topLevelObjects){
        if ([currentObject isKindOfClass:[UITableViewCell class]]){
            cell =  (CustomCell *) currentObject;
            break;
        }
    }        
}
// some more setup and stuff
return cell;
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

To make a custom cell create a subclass of UITableViewCell. Make a nib with a view and connect an outlet to it:

@interface CustomCell : UITableViewCell
{
    IBOutlet UIView* _cellView;
}

Override initWithStyle: reuseIdentifier: method and load the nib there. Add the custom view to the cell's content view:

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self)
    {
        [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
        [_cellView setFrame:[[self contentView] bounds]];
        [[self contentView] addSubview:_cellView];
    }
    return self;
}

Then in the cellForRowAtIndexPath code you simply call:

if (cell == nil)
{
    cell = [[[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier: CellIdentifier ] autorelease];
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...