nstableView -SetDatasource는 FSEVENTS에 의해 트리거 될 때 작동하지 않습니다

StackOverflow https://stackoverflow.com/questions/328277

문제

그래서 여기에 내가 가진 것이 있습니다.

  • NSMutableARRAY 데이터 소스가있는 nstableView
  • FSEVENTS 테이블보기의 데이터가 포함 된 파일이 포함 된 폴더를 모니터링합니다 (사용 scevents 객관적인 C 추상화 선함)
  • FSEVENTS는 UI에서 다시로드 버튼과 동일한 기능을 트리거합니다. 이 기능은 해당 파일의 내용을 기반으로 새로운 데이터 소스로 테이블보기를 새로 고침합니다. setDataSource:.

그리고 다음은 다음과 같습니다.

  • 파일을 변경하면 FSEVENT가 트리거되고 새로 고침 메소드가 호출됩니다.
  • 테이블 뷰가 수락 해야하는 배열에는 실제로 FSEVENT를 유발 한 변경 사항이 포함됩니다.
  • setDataSource: 올바른 데이터 소스로 nstableview로 전송됩니다.
  • 테이블보기에는 변경 사항이 나타나지 않습니다!

하지만:

  • FSEVENT와 동일한 방법을 트리거하는 새로 고침 버튼을 누르면 테이블 뷰가 새 데이터로 업데이트됩니다.

또한 FSEVENT를 NSNotification으로 교체하려고 시도했습니다.NSApplicationDidBecomeActiveNotification), 그러나 같은 일이 발생합니다.

왜 이런 일이 일어나고 있는지 아는 사람이 있습니까?

편집 : 설명을 위해, 내 질문의 jist는 다음과 같습니다. 버튼 프레스에 의해 트리거 될 때 NstableView가 다시로드되지만 FSEVENT 또는 NSNotification에 의해 트리거 될 때는 그렇지 않습니까?

편집 : 감사합니다 DICIU, 나는 실제로 모든 UI 참조가 이벤트에 의해 트리거 될 때 0x0을 가리키지 만 버튼 클릭으로 트리거 될 때 유효한 주소를 가지고 있음을 알아 냈습니다. 이 객체는 모두 IB로 선언되어 있으므로 내 코드에서 진행중인 인스턴스화 나 할당이 없습니다. 그래서 내 질문은 지금입니다.이 포인터가 NIL을 가리키는 것을 막기 위해 어떻게해야합니까?

도움이 되었습니까?

해결책

이벤트/알림에 등록 할 때 컨트롤러 클래스의 다른 인스턴스를 전달하는 것 같습니다.

다른 팁

우리는 전화합니다 ReloadData NstableView에서 테이블에 추가/제거 할 새 데이터가있을 때.

이것은 nstableview가 다시 그리기를 강요하는 데 도움이 될 수 있습니다.

이것이 당신의 묻는 것인지 확실하지 않습니다. 당신의 질문의 말은 혼란스럽고 일련의 사건을 말하지만 진정한 질문은 아닙니다.

런 루프의 두 번째 패스에서 FSEVENT에서 방법을 호출하려고 했습니까?

[myObject performSelector:@selector(reloadAction:) withObject:nil afterDelay:0.0];

당신은 설정하고 있습니다 NSArray 테이블 뷰의 데이터 소스로 직접?

그건 방법이 아닙니다 NSTableView 공장. 데이터 소스는 NSTableDataSource. NSArray 그렇지 않습니다. 데이터 소스를 직접 작성합니다. 아마도 당신이 현재 전화 한 것과 같은 대상 일 것입니다. setDataSource:.

다른 방법은 바인딩을 사용하는 것입니다.

새로 고침 메소드의 범위 내에서 테이블보기에 대한 참조가 유효하지 않습니까?

즉, 당신은 당신이 [nil reloaddata]를 호출하지 않는 것이 오류를 일으키지 않는다고 확신합니까? 테이블 뷰에 대한 참조는 니브를 가라 앉기 전에 또는 다른 상황에서 설정하면 새로 고침 코드에있을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top