문제

인사말,

"Squareclass"라는 NSObject 클래스를 만든 View Based Application Project가 있습니다. 이제 Xcode의 인터페이스 빌더에서, 나는 "squareclass"를 글로벌 범위를 가진 정사각형 객체로 인스턴스화 할 수 있기를 원합니다. ), 나는 그 행동 내에서 그 객체의 메소드를 호출 할 수 있기를 원합니다.

예시:

(void)MyAction1:(id)color
{
   [square setColor:color];
}

(void)MyAction2:(id)width
{
   [square setWidth:width];
}

보시다시피, 정사각형 객체에는 전역 범위가 있어야합니다. 이것은 우리 중 일부를 위해 쉽게하는 것처럼 보일 수 있습니다. 나는 웹을 살펴보고, .xib 파일이 아닌 .nib 파일의 방법을 찾았습니다.

어떤 제안도 대단히 감사 할 것입니다. 정말 감사합니다.

요한.

추신 : 이것은 나의 첫 번째 게시물입니다.

도움이 되었습니까?

해결책

첫째, NIB 파일은 모든 의도와 목적을 위해 XIB 파일과 동일합니다. XIB 파일의 컴파일 버전 일뿐입니다.

이제 NIB/XIB에서 NSObject에서 파생 된 객체를 만들려면 라이브러리 창에서 NSObject를 파일로 드래그하십시오. 그런 다음 ID Inspector에서 클래스를 사용자 정의 클래스로 변경하십시오.

다음과 같은 방법을 정의하는 경우 :

- (IBAction)myAction:(id)sender

인터페이스 빌더에 연결할 수 있습니다.

모든 것을 말하면, 당신이하는 일이 옳은 일인지 말하기는 어렵습니다. NSViewController 서브 클래스를 사용해야하는 것처럼 들리므로 문서를 살펴보십시오.

또한 뷰, 컨트롤러 및 모델 객체가 무엇인지 이해해야합니다. 이것에 대한 많은 문헌이 있습니다.

다른 팁

UIView를 확장하는 클래스를 작성하면 XIB의 파일 소유자가 확장 클래스를 구현할 수 있습니다. 이 시점부터 정사각형의 확장 클래스에 인스턴스 변수를 추가합니다. 프로세스의 마지막 단계는 각 컨트롤에 동작에 결합하기 위해 수업에 메소드를 추가하는 것입니다.

- (IBAction) pinSelected: (id)sender;

이러한 메소드를 작성하면 (IBACTION을 반환하도록하십시오. 실제로는 무효의 별칭이지만 인터페이스 빌더에 대한 힌트 역할을합니다) 파일 소유자 (Control + DRAR을 사용하여 설정을 사용하여 컨트롤을 바인딩 할 수 있습니다. 링크).

행운을 빕니다!

XIB 파일 내에서 수행되지 않은 필요한 작업을 수행하는 방법을 찾았습니다. 위의 제안이 유효하다고 생각했던 것보다 훨씬 간단합니다.

정사각형 객체를 사용하려면 헤더 파일을 참조해야했습니다.

 #import "square.h"

SquareUiviewController.h에서 정사각형 객체에 대한 참조를 추가합니다.

Square *square;

그런 다음 SquareUicontroller.m에서 다른 작업을 수행하기 전에 정사각형 객체를 할당/초기화하면됩니다.

(IBAction)myInit
{
square = [[Square alloc] init];
}

이제 나는 첫 번째 게시물과 voila의 메소드를 사용할 수 있습니다!

추신 : 비평가, 불을 지르십시오!

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