NSViewController로 NIB를로드 한 후… NIB의 NSButton에 어떻게 액세스합니까?
-
05-07-2019 - |
문제
Iboutlets가 2 차 펜촉에서 NSButton에 연결된 NSViewController를 서브 클래스했습니다.
NSViewController를 인스턴스화하고 NSMenu에서보기를 적용 할 수 있습니다. 훌륭하게 작동하지만 버튼에 액세스하여 제목을 변경합니까?
NSViewController에는 iBoutlets가 있기 때문에 컨트롤러를 통해이를 수행 할 것이라고 가정했습니다.
//this part works great
NSViewController *viewController = [[toDoViewController alloc] initWithNibName:@"toDoView" bundle:nil];
NSView *newView = [viewController view];
newMenuItem.view = newView;
//this part not so much
[viewController [toDoButton setTitle:someStringHere]];
여기에서 어디로 가야하는지에 대한 조언이 있습니까?
추가 편집 : TodoviewController 클래스 -
@interface toDoViewController : NSViewController {
IBOutlet NSButton *checkBoxButton;
IBOutlet NSButton *toDoButton;
}
@end
해결책
[viewController [toDoButton setTitle:someStringHere]];
대화식 소설 통역사가 말한 것처럼,“동사가 빠진 것 같습니다.”
수신기가 있습니다.viewController
) 및 완전한 메시지 발현 ([toDoButton setTitle:…]
) 및 브래킷이지만 선택기가 없습니다. 따라서 이것은 유효한 메시지 표현이 아닙니다.
두 가지 가능성이 있습니다.
- 뷰 컨트롤러에 메시지를 보내고 결과를 전달한다는 의미입니다.
setTitle:
그 주장으로, 당신은 선택기를 잊어 버렸습니다. NSButton이기 때문에 나는 이것이 거의 가능하지 않습니다setTitle:
아무것도 반환하지 않습니다. - 뷰 컨트롤러에서 버튼을 가져온 다음 버튼을 보내는 것을 의미합니다.
setTitle:
메시지. 이보기 컨트롤러가 추가 된 NSViewController의 서브 클래스 인스턴스라고 가정합니다.toDoButton
속성, 어느 쪽이든[[viewController toDoButton] setTitle:someStringHere]
또는[viewController.toDoButton setTitle:someStringHere]
.
제휴하지 않습니다 StackOverflow