2013-04-13 7 views
0

응용 프로그램의 용도로 인해 콜렉션 뷰의 셀 클래스에서 메서드를 호출해야합니다. 이 메서드는 콜렉션 뷰를 구현하는 디테일 뷰 컨트롤러에 있습니다.다른 클래스의 메서드를 호출하여 uibuttonitem을 추가하는 방법

복제 시작시 상세보기 컨트롤러의 viewDidLoad에서 메소드를 완전히 호출하면 모든 것이 잘되고 단추가 탐색 막대에 의도적으로 추가되지만 셀 클래스에서 동일한 메소드를 호출해도 아무 것도 발생하지 않습니다. 뭔가 잊어 버리니?

여기에 코드

collectionViewCell.m

- (void) addButtonToNavigationBar { 

DetailViewController *dvc = [[DetailViewController alloc]init] 
[dvc implementButton]; 

} 

DetailViewController.h

- (void) implementButton; 

DetailViewController.m이

- (void) implementButton { 
addButton = [[UIBarButtonItem alloc] initWithTitle:@"Done" 
              style:UIBarButtonItemStyleBordered 
              target:self 
              action:@selector(editTable)]; 
[self.navigationItem.rightBarButtonItem setStyle:UIBarButtonItemStyleBordered]; 
[self.navigationItem setRightBarButtonItem:addButton animated:YES]; 

어떤 힌트를 주셔서 감사합니다.

답변

1

DetailViewController *dvc = [[DetailViewController alloc]init];을 쓰면 새 컨트롤러가 생성됩니다. 이미 존재하는 것이 아닙니다.

상황에 따라 컨트롤러가 셀에서 NSNotification을 수신 대기하고 수신 할 때 implementButton을 호출하는 것이 좋습니다.

+0

귀하의 적응증에 감사드립니다. 기존 제어기를 호출하고 이후에 어떻게 호출 할 것입니까? – user2046702

+0

기존 제어기를 호출하는 방법에 관심이있는 것 외에도 nsnotification을 사용하는 것이 효과적입니다. 고맙습니다. – user2046702

+0

기존 컨트롤러를 사용하려면, 컨트롤러에 대한 참조가 생성 될 때 셀로 전달되어야합니다. 이는 알림에 비해 다소 복잡해 보입니다. –