L'ajout d'un délégué à une coutume UITableViewCell (mauvaise erreur d'accès)

J'essaye d'ajouter un délégué personnalisé personnalisé UITableViewCell de la mine.

Sur cette cellule, j'ai un bouton qui doivent incendie d'une méthode dans le ViewController où la UITableView est situé sur.

Je suis en train de faire toutes les étapes habituelles pour ajouter un délégué personnalisé, mais pour une raison quelconque, quand j'ouvre le CR de l'exécution de l'application se bloque et me donne une mauvaise erreur d'accès.

Quand je commenter tout le délégué code il fonctionne correctement donc je pense que quelque chose est incorrect de la façon dont je ajouter mon délégué. Quand je laisse mon id de propriété sans commentaire, il semble se bloquer.

Je mettre en œuvre le protocole dans le VC. J'ai fait assigner le délégué de la cellule dans la cellForRowAtIndexPath:. Tout le délégué méthodes sont en place.
J'ai été à l'aide de constructions similaires dans d'autres classes, mais jamais dans une sous-classe de UITableViewCells avant.

Avant que je poste un peu de code, je voudrais savoir si quelqu'un a rencontré ce bug. Si et comment il a résolu ou si c'est même possible de faire un délégué personnalisé pour un UITableViewCell sous-classe.


EDIT:

Mon customCell.h

#import <UIKit/UIKit.h>

@class MyTableViewCell;

@protocol MyTableCellProtocoll <NSObject>

-(void) didPressButton:(MyTableViewCell *)theCell;

@end

@interface MyTableViewCell : UITableViewCell
{

    UIButton *myButton;

    id<MyTableCellProtocoll> delegationListener;

}

@property (nonatomic,retain) UIButton *myButton;

@property (nonatomic,assign) id<MyTableCellProtocoll> delegationListener;

- (void) buttonAction;

@end

.m

#import "MyTableViewCell.h"

@implementation MyTableViewCell

@synthesize myButton;
@synthesize delegationListener;

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        //Initialization code

        self.myButton = [UIButton buttonWithType:UIButtonTypeCustom];
        self.myButton.backgroundColor = [UIColor clearColor];
        self.myButton.frame = CGRectMake(5, 0, 10, 32);
        self.myButton.titleLabel.adjustsFontSizeToFitWidth = YES;
        [self.myButton addTarget:self action:@selector(buttonAction) forControlEvents:UIControlEventTouchUpInside];
        [self.contentView addSubview:self.myButton];  
    }
    return self;
}

- (void) buttonAction
{
    NSLog(@"buttonpressed");
    [self.delegationListener didPressButton:self];
}

@end

MyVC met en œuvre le délégué en tant que tel dans la .h

@interface MyVC : UIViewController <UITableViewDelegate, UITableViewDataSource, MyTableCellProtocoll>

et il utilise également l'un delegatemethod de MyTableCellProtocoll dans le .m

- (void)didPressButton:(MyTableViewCell *)theCell
{
    NSLog(@"didPressButton");
}

- Je attribuer le délégué de l'cellForRowAtIndexPath:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{    
    static NSString *CellIdentifier = @"Cell";

    MyTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[MyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
        cell.delegationListener = self;
    }

    return cell;
}

Ce sont tous les sites que j'utilise pour le délégué.
Ce que je veux faire est de changer le buttontitle et insérer quelques lignes après que la cellule (modifié doublons)

Espérons que cela permettra de clarifier les choses un peu plus.


EDIT2:
Le bouton de la méthode n'est pas appelée au début comme l'a dessus décrite dans la section commentaire. Editted code avec logcode.


EDIT3:
Il n'y a rien de mal avec le bouton. Il est le délégué de la propriété qui est foiré quelque part. Avec points d'arrêt et les journaux et les commentaires j'ai fait en sorte de que.

Le code est exécuté jusqu'au dernier élément de ma liste source de données, puis il se bloque. 1 pas de plus vers le problème maintenant, je suppose.


MONTAGE FINAL:
Ok, il semble que tous les délégués et les boutons et d'autres éléments n'est pas le problème. C'était la heightForRowAtIndexPath: vissage moi.
Merci à tous pour votre soutien en tout cas!

Ne peux pas commenter sans le code. Mais oui, un UITableViewCell pouvez utiliser un UIViewController en tant que délégué - votre problème de sons comme la norme de l'usage incorrect des délégués. Et... elle pourrait ne pas être la meilleure solution, en fonction.
Il n'ya aucune raison pourquoi il devrait être impossible de créer un délégué du protocole et des id<protocole> ivar dans une sous-classe NSObject (qui UITableViewCell est)
J'ai édité la question avec certains de mon code. Ces lieux ont l'utilisation de mes délégué actions. Espérons que cela aide.
Et... où est le MAUVAIS ACCÈS se produire, et je soupçonne l'entrée au clavier buttonaction méthode peut être appelée à partir de l'initialisation d'une certaine manière. La peine de mettre un peu de code pour vérifier (un NSLog).
Je pense que vous devez mettre un point d'arrêt (éventuellement en cellForRowAtIndexPath) et trouver exactement vous êtes en panne, sinon nous allons tous nous garder de jeter le devine à vous 🙂

OriginalL'auteur Totumus Maximus | 2011-11-09