2013-03-29 1 views
1

멀티 터치 처리 메서드를 재정의하는 UIView 하위 클래스가 있습니다. 내 질문은, 그보기에 주어진 접촉으로 계산을 수행하면 Model View Controller 디자인 패턴이 깨지는 것입니다. 계산 후에보기를 숨기고 결과를 인쇄하고 핵심 데이터 모델을 업데이트해야합니다. 나는 이것에 대해 혼란스러워한다.UIView 하위 클래스에서 계산을 수행하면 MVC의 디자인 패턴이 손상됩니까?

편집 :

일부 코드입니다.

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    // getting all the touches in the given gesture sequence 
    NSSet *allTouches = [event allTouches]; 

    // checking taps count 
    if ([allTouches count] == 3) 
    { 
     // here I print the results and do the calculations 
     [self validateGestureSequenceWithTouches:allTouches]; 
    } 

    // cleaning the view 
    NSArray *subviews = [self subviews]; 
    for (UIView *view in subviews) { 
     if (![view isKindOfClass:[UINavigationBar class]]) 
      [view removeFromSuperview]; 
    } 
} 

답변

2

MVC 가이드 라인을 준수하려면 모델 계층에서 비즈니스 수준의 계산이 필요합니다. 그러나 모든 계산은 "비즈니스 계산"으로 적합하지 : 매우 자주 UI 문제를 결정하는 계산을 수행해야하며, 각각의 UI 요소와 같은

  • 가시성을 개별 UI 요소의
  • 크기,
  • 위치 및 접촉의 방향,

등등. 계산이 비즈니스 종류의 계산 인 경우 모델로 이동해야합니다. 그렇지 않으면 뷰 또는 컨트롤러에 유지하는 것이 좋습니다.

+0

"보기 또는 컨트롤러에 보관"한다는 의미입니다. – rdelmar

+0

컨트롤러에서 결과를 관리 할 수 ​​있도록 뷰의 결과와 함께 콜백 메소드를 보내는 것이 좋습니다. 내 말은, 나는 UIViewController에서 얻을 것이지만, UIView 서브 클래스에서 그것을하는 것이 좋다.? – thxou

+0

@ThXou 이것은 구현하려고하는 일종의 논리에 달려 있습니다. 계산을 뷰간에 공유 할 수 있거나 뷰와 관련이없는 경우 컨트롤러에 배치하는 것이 좋습니다. 반면에, 계산이 크게 특정 뷰일 때, 뷰를 유지하는 것이 더 좋습니다. – dasblinkenlight