2017-01-31 2 views
0

У меня настроен метод делегата в пользовательской ячейке. скажем,Запустить метод делегирования в viewcontroller непосредственно из пользовательской ячейки

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

- Я позвоню выше функции где-то в моей камере ---

и я хочу, чтобы слушать какие-либо изменения в пользовательской ячейке в ViewController. Как реализовать это с помощью делегата в Viewcontroller без использования tableviewcontroller.

В ViewController I, хотя о выполнении,

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

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

P.S. Я не хочу использовать NSNotification

ответ

0

Я придумал другой подход, чтобы передавать данные из ячейки в другой диспетчер представлений (а не в 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) 

В cellForRowAtIndexPath в TableViewController, я получаю логическое свойство и передать его^passBooleanToViewController.

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

Наконец, в ViewController я снова получить свойство блока из TableViewcontroller, содержащий логическое значение, которое было передано к TableViewController от CustomCell

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

** Это один из способов, я был в состоянии для исправления проблемы передачи значения из пользовательской ячейки в viewcontroller. Было бы здорово, если бы и другие подходы могли быть разделены.

Смежные вопросы