objective-c accessing methods from custom cell

ok, this is maybe a newbie question but i need help with it..
I have a someview.m and in it a custom cell which is defined in customCell.h and .m
So in someview.m i have

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath     *)indexPath
{
    customCell *cell=[tableView dequeueReusableCellWithIdentifier:@"charCell"];
if (cell == nil || (![cell isKindOfClass: customCell.class]))
{
    cell=[[customCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"charCell"];
}
return cell;
}

i have a method too

  • How can I scan barcodes on iOS?
  • Parsing a local xml file in iOS sdk
  • Subclassing SCNScene and SceneKit Editor
  • How to write the method to execute after completion of two methods (ios)
  • Multiple lines of a label in a custom UITableviewCell
  • UIBarButtonItem: How can I find its frame?
  • -(void) printStuff
    {
       NSLog(@"stuff");
    }
    

    Now the custom cells are working fine, but i need to access the method printStuff from

    - (BOOL)textFieldShouldReturn:(UITextField *)textField
    

    which is in customCell.m
    i have tried stuff like [[self super] printStuff] but i always get an error…
    I hope i explained the problem correctly

    4 Solutions Collect From Internet About “objective-c accessing methods from custom cell”

    if the textField is in your custom cell, you can handle the textField… events in the customCell.m too.

    if you do so, you can call the methode simply with [self printStuff]; in

    - (BOOL)textFieldShouldReturn:(UITextField *)textField

    //CustomCell.h
    // ...
    @interface CustomCell : UITableViewCell <UITextFieldDelegate>
    {
        //...
    }
    
    -(void)printStuff;
    
    @end
    
    //CustomCell.m
    
    //...
    
    -(void)printStuff
    {
        //...
    }
    
    -(BOOL)textFieldShouldReturn:(UITextField *)textField
    {
        //...
        [textField resignFirstResponder];
    
        [self printStuff];
    
        return YES;
    }
    

    or if the printStuff methode is in you tableView class, you can declare a protocol

    // CustomCell.h
    @protocol CustomCellProtocol <NSObject>
    
    -(void)printStuff:(NSString *)stuff;
    
    @end
    
    @interface CustomCell UITableViewCell <UITextFieldDelegate>
    
    @property (nonatomic, assign)UIViewController<CustomCellProtocol> *parent;
    
    // CustomCell.m
    -(void)printStuff:(NSString *)stuff
    {
        [parent printStuff:stuff];
    }
    
    
    // TableViewClass.h
    ...
    @interface TableViewClass : UITableViewController<CustomCellProtocol>
    
    
    // TableViewClass.m
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        customCell *cell=[tableView dequeueReusableCellWithIdentifier:@"charCell"];
        if (cell == nil || (![cell isKindOfClass: customCell.class]))
        {
            cell=[[customCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"charCell"];
            cell.parent = self; // or with a custom setter methode
        }
        return cell;
    }
    

    Take 1 variable in customCell.h like

    @property (nonatomic,strong) UIView *parent; //Assuming someview is UIView, if it is UIViewController than change UIView to id
    

    now in following method

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath     *)indexPath
    {
        customCell *cell=[tableView dequeueReusableCellWithIdentifier:@"charCell"];
    if (cell == nil || (![cell isKindOfClass: customCell.class]))
    {
        cell=[[customCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"charCell"];
    }
    cell.parent = self;
    return cell;
    }
    

    now in

    -(BOOL)textFieldShouldReturn:(UITextField *)textField
    {
        [_parent printStuff]; //Call like this.
        return YES;
    }
    

    Hope this helps, Let me know in case of any query.

    Make your UITableView global

    And in -(BOOL)textFieldShouldReturn:(UITextField *)textField

    add something like:

    UITableViewCell *cell = [tableView cellForRowAtIndexPath:TheIndexPath];
    [cell printStuff];
    

    You need to use delegate. Custom cell init method will take delegate of someview. To textFeild in CustomCell set this delegate. Something link this
    In CustomCell.h have a class variable

    {
    UIViewController *target;
    }
     - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier withtarget:(UIViewController *)_target;
    

    In CustomCell.m

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

    // You can now use this call [target printStuff];

    In someView.m cellForRow method call this init method to initialise cell.

    cell = [[[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier withtarget:self ];