2014-10-24 3 views
0

UILabel의 값을 변경하려고합니다.uitableviewcell 하위 클래스의 공용 변수에 액세스

값을 변경하려는 값은 ViewController에 정의되어 있습니다. 지금

, 나는이 코드로 일하고 있어요 :

- (void)tapOnBalance { 
    TimelineViewController *timelineVC = [[TimelineViewController alloc]init]; 
    if(timelineVC.oldBalance && timelineVC.newBalance){ 
    NSTimeInterval duration = 0.5f; 
    [UIView transitionWithView:self.amountLabel 
        duration:duration 
        options:UIViewAnimationOptionTransitionCrossDissolve 
        animations:^{ 
        self.amountLabel.text = timelineVC.newBalance;  
        } completion:^(BOOL finished){ 

        [UIView animateWithDuration:duration delay:duration options:UIViewAnimationOptionTransitionCrossDissolve animations:^{ 
         self.amountLabel.text = timelineVC.oldBalance; 
        } completion:^(BOOL finished){ 
         NSLog(@"finished"); 
        }]; 
    }]; 
    } 
} 

을하지만, 난 아마 새로운 insance로 TimelineViewController을 초기화하고 있습니다 때문에, 모든 초기 값은 전무하다 if/else 내부의 코드 블록 그래서 성명은 결코 실행되지 않습니다.

TimelineViewController의 새 인스턴스를 만들지 않고 공개 값에 액세스하려면 어떻게해야합니까?

+0

정말 좋은 생각입니다. 셀에는 뷰 컨트롤러에 대한 지식이 없어야합니다. 셀 클래스는 프로토콜을 정의하고 대리인 속성을 가져야합니다. 그런 다음보기 컨트롤러가 셀의 대리자가 될 수 있습니다. 그런 다음 셀은 대리인에게 필요할 때 업데이트 된 값을 제공하도록 요청할 수 있습니다. 이렇게하면 데이터를 가져 오는 위치에 대한 구체적인 지식 없이도 셀이 작동 할 수 있습니다. – rmaddy

+0

@rmaddy는 합법적 인 것처럼 보이지만 동일한 작업을 수행하는 데 더 많은 작업이 필요합니다. 이런 식으로 할 때 나는 어떤 악을 할까? – bdv

+0

커플 링이 너무 많습니다. 셀에 특정보기 컨트롤러에 대한 지식이 너무 많이 필요하며 데이터가 어떻게 설정되는지는 더 심합니다. 두 번째보기 컨트롤러에서 동일한 종류의 표 셀이 필요하면 어떻게됩니까? 물론, 셀이 특정 뷰 컨트롤러의 데이터에 직접 액세스하는 것이 쉽고 빠르지 만 장기적으로 후회할 것입니다. 코드가 변경되면 나중에 더 많은 작업이 필요합니다. 또한 MVC 디자인에 위배됩니다. – rmaddy

답변

0

당신이 맞으면 tapOnBalance이 호출 될 때마다 TimelineViewController의 새 인스턴스를 만듭니다. 파일 헤더 또는에서

@property (nonatomic, strong) TimelineViewController *timelineVC; 

:

나는 당신의 아키텍처와 유사하지만 떠오르는 솔루션 tapOnBalance를 구현하는 뷰 컨트롤러 내부의 TimelineViewController에 대한 속성을 생성하는 방법을 잘 모르겠습니다 개인 인터페이스. 그런 다음 viewDidLoad 안에 한 번 초기화하고 으로 액세스하십시오.

+0

어떻게 든 TimelineViewController가 초기화되면 newBalance와 oldBalance를 업데이트하지 않습니다. – bdv

+0

어디서 어떻게 설정합니까? – Cornelius

관련 문제