2017-12-17 3 views
-2

프로그래밍 방식으로 NSTextField에 바인딩하고 런타임에 변경하고 싶습니다. 나는 전자 질문이있다. 새로운 묶기 전에 바인드 해제해야합니까? 예를 들어 :바인딩 전에 바인드 해제해야합니까?

[_noteTextField bind:@"value" toObject:self withKeyPath:@"project.saveNote" options:nil]; 
[_noteTextField unbind:@"value"]; 
[_noteTextField bind:@"value" toObject:self withKeyPath:@"project.note" options:nil]; 

가 맞습니까? 아니면 내가 특히 enabled 같은 부울 값,

[_noteTextField bind:@"value" toObject:self withKeyPath:@"project.saveNote" options:nil]; 
[_noteTextField bind:@"value" toObject:self withKeyPath:@"project.note" options:nil]; 
+0

@matt이 경고에 대한 링크가 있습니까? – Willeke

+0

'@ "값"대신에'NSValueBinding'을 사용하십시오. 왜 바인딩을 변경하고 싶습니까? 그것은 디자인 결함처럼 느껴집니다. – Willeke

+0

@Willeke 바인딩을 변경하는 대신 컨트롤러 수준에서 개체를 대체하는 것이 좋을 수도 있지만 유용 할 수 있습니다. 적어도'-unbind :'는 존재합니다. –

답변

0

여러 값 바인딩이 있습니다 바인딩을 해제 할 필요가 없습니다. 이것들은 바운드 프로퍼티의 키를 변경하는 것으로 구현됩니다. 이자형. enabled, enabled2, ... 따라서 동일한 키를 두 번 사용하면이 다중 값 바인딩도 기존 바인딩을 제거합니다.

그러나 기존 바인딩이 제거되었는지 여부는 문서화되어 있지 않으므로 구현시 다른 동작을 선택할 수 있습니다.

기존 바인딩을 명시 적으로 제거하지 않으시겠습니까? 이것은 당신이 원하는 것입니다. 그리고 명시 적으로 말하고 싶은 코드를 사용하는 것이 좋습니다.

관련 문제