2012-08-23 2 views
1

사용자가 nstableview의 열 크기 조정을 시작하는 이벤트를 가져올 필요가있는 MAC 응용 프로그램에서 작업하고 있습니다. 알림 columnDidResize가 있다는 것을 알고 있습니다. 그러나 열의 크기를 조정할 때 호출됩니다.nstableview 열을 알리는 알림 크기 조정 시작

답변

3

KVO 알림을 사용하여 같은 문제가 해결되었습니다.

는 NSTableColumn 폭에 대한 관찰자로 테이블 대리자를 설정합니다

[column addObserver:self forKeyPath:@"width" options:0 context:nil]; 

옵션 인수는 실제 변화가 발생하기 전에 알림을 조정할 수 있습니다. @pointum 작품으로 KVO를 사용

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context 
{ 
    NSInteger resizedColumn = tableView.headerView.resizedColumn; 
    if (resizedColumn != -1) 
    { 
     if (object == column && 
      object == [tableView.tableColumns objectAtIndex:resizedColumn]) 
     { 
      // User is resizing column 
     } 
    } 
} 
+0

좋은 해결책. 나를 위해 잘 작동합니다. OP가 동의해야합니다. –

+0

좋은 물건! 관찰자를 제거한 경우 해당 열을 제거해야합니다. –

0

, 표시된대로 : 폭 변경을 할 때

은 다음 알림을받을. 관찰자를 등록 해제하는 것과 관련하여 문제가 발생하면 실제로 수행 한 작업을 수행 할 수 있습니다. Subclass NSTableColumn 및 Width 매개 변수의 설정자를 대체하고 거기에서 알림을 보냅니다.

관련 문제