2017-01-31 1 views
0

사용자 지정 셀에 대리자 메서드를 설정했습니다.사용자 정의 셀에서 직접 viewcontroller에서 대리자 메서드를 실행하십시오.

--- 내 세포의 어딘가에 기능 이상 호출 나는의 ViewController에서 사용자 정의 셀의 변화에 ​​대해 듣고 싶은 -의 말

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

을 할 수 있습니다. 어떻게 tableviewcontroller 사용하지 않고 Viewcontroller 대리자를 사용하여 구현할 수 있습니다.

일에 대한 생각의 ViewController I에서

,

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

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

P.S. 나는 NSNotification을 사용하고 싶지 않다.

답변

0

셀을 다른 뷰 콘트롤러 (셀이 인스턴스화 된 tableviewcontroller가 아닌)로 데이터를 전달하는 다른 접근법을 사용했다. 이것은 자신이이 문제에 얽매여있는 사람을 도울 수 있습니다. 사용자 정의 셀에서 셀을 인스턴스화하는 tableviewcontroller에 속성을 전달하는 블록 속성을 만들었습니다.

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

customCell에서 터치 된 단추에서 부울 값으로 부울 속성을 설정했습니다.

self.didTouchButtOnCell(YES/NO); 

는 tableViewcontroller에서 I는 I는 부울 값을 전달하기위한 곳의 ViewController 데이터를 전달할 것이다 다른 블록을 만들었다. TableViewController에서 cellForRowAtIndexPath에서 TableViewController에서 ,

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

, 나는 부울 속성을 얻을^passBooleanToViewController에 전달합니다.

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

마지막의 ViewController에 다시 **이 내가 할 수 있던 방법 중 하나입니다

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

CustomCell

에서 TableViewController까지 전달 된 부울 값을 포함 TableViewcontroller의 블록 속성을 가져 사용자 정의 셀에서 viewcontroller로 값을 전달하는 문제를 수정했습니다. 다른 접근법들도 공유 할 수 있다면 좋을 것입니다.

관련 문제