2012-09-11 1 views
0

SqlServer에서 데이터를로드하는 별도의 클래스를 만들었습니다. 지금은 객체에 검색어를 전달하고 데이터베이스에서 항목을 검색합니다.비 UIViewController에서 modalView를 표시하는 방법

두 개 이상의 항목을 발견하면 modalviewcontroller를 제시해야합니다. 문제는 이것이 NSObject이고 모달 뷰를 표시하는 것에 대해 알지 못한다는 것입니다.

NSObject에서 modalviewcontroller를 어떻게 표시 할 수 있습니까?

답변

0

복제본에 알림을 게시하거나 (보기 컨트롤러가 제공하는 유연성 제공) 또는 대리인 프로토콜을 정의하여 모달을보기 컨트롤러에 표시하는 위임을 시도해보십시오. 이렇게하면 모델이 뷰와 분리되어 앱의 MVC 아키텍처가 유지됩니다.

EDIT : 위임을위한 블록을 사용하는 것은 내 관점에서 훌륭한 접근 방식입니다. 난 단지 귀하의 API를 조정하여 중복의 경우 수행 할 수있는 블록을 가지고, 귀하의 모달 다른 많은 선택을 처리하는 데 걸릴 수 있습니다. 아마도 유연성이 극대화 될 것입니다.

EDIT2 : 현재 API의 이해를 바탕으로,이 권하고 싶습니다 :

- (void)searchForItemWithString:(NSString *)searchString completionBlock:(librarianDidSelectItemBlock)block multiSelectBlock:(librarianMultiSelectBlock); 

이 또한 나뿐만 아니라 완료 블록을 취할 모달 뷰 컨트롤러를 설계하는 것입니다.

+0

나는이 모든 것을 내가 만든 물건에 보관하려고합니다. 나는 애플 리케이션 델리게이트에 대한 참조를 만들고 거기에서 그것을하기 위해 rootviewcontroller를 얻는 것을 끝내었다. 그 해결책에 대해 어떻게 생각하세요? – Hackmodford

+0

@Hackmodford 이상하다고 생각하지 않습니다. 개체를 앱 위임자와 앱 대리인의보기 컨트롤러에 연결했습니다. 그러나 모달 프레젠테이션을 선택 사항으로 위임하는 것을 고려하지 않은 경우, 아마도이를 사용하는 것이 최선의 방법 일 수 있습니다. 그러나 상황에 따라 일부 가시성 문제가 발생할 수도 있습니다. –

+0

위임 대신 블록을 사용하려고합니다. 사서라고 부르는 객체를 만들었습니다. ViewController는 사서에게 몇 가지 항목을 검색하도록 요청할 것입니다. 사서 (NSObject)가 검색하고 1을 찾으면 결과를 블록으로 반환합니다. 둘 이상의 항목을 찾으면 사용자가 항목을 선택할 수 있도록 viewController를 제시해야하며, 항목을 블록으로 반환합니다. 말이 돼? – Hackmodford