直接从Custom Cell在viewcontroller中运行Delegate方法

时间:2017-01-31 21:14:31

标签: ios delegates custom-cell

我在自定义单元格上设置了委托方法。让我们说,

@protocol CheckDelegate <NSObject>
@required
- (void)checkForUpdate;
@end
@property (nonatomic, weak) id<CheckDelegate> delegateForChecker;

- 我会在我的单元格的某处调用上面的函数---

我希望收听Viewcontroller中Custom Cell的任何更改。如何在不使用tableviewcontroller的情况下使用Viewcontroller中的委托来实现它。

在ViewController中我虽然做了,

-(void) viewDidLoad{
  CustomCell * cll = [[Customcell alloc]init]
  cll.delegateForChecker = self;
}

-(void) checkDelegate{
  NSLog(@"Something changed");
}

P.S。我不想使用NSNotification

1 个答案:

答案 0 :(得分:0)

我想出了一种不同的方法,使用块将数据从单元格传递到另一个viewcontroller(而不是实例化单元格的tableviewcontroller)。这可能会帮助那些可能发现自己陷入此问题的人。 在自定义单元格中,我创建了一个名为block的属性,该属性将属性传递给tableviewcontroller,其中单元格是即时的。

@property  (copy, nonatomic) void (^didTouchButtonOnCell) (BOOL selectedButton);

在customCell中触摸的按钮中,我使用布尔值设置布尔属性。

 self.didTouchButtOnCell(YES/NO);

在tableViewcontroller中我创建了另一个块,它将数据传递给我打算传递布尔值的viewcontroller。  在TableViewController中,

 @property (copy, nonatomic) void (^passBooleanToViewController) (BOOL selectionFromButton)

在TableViewController的cellForRowAtIndexPath中,我获取boolean属性并将其传递给^ passBooleanToViewController。

    cell.didTouchButtonCell = ^(BOOL selection)
   {
      passBooleanToViewController(selection)
    }

最后,在ViewController中,我再次获取TableViewcontroller的Block属性,该属性包含从CustomCell传递给TableViewController的布尔值

Viewcontroller.passBooleanToViewController = ^(Bool sel){
    NSLog(@"%I here is the boolean value",sel);
}

**这是我能够解决将值从自定义单元格传递到viewcontroller的问题之一。如果其他一些方法也可以共享,那就太好了。