2012-02-17 3 views
0

waffley 제목을 아쉽게 생각합니다.보기 및 레이블 설정 변경시 예기치 않은 결과가 발생했습니다.

내 iOS 앱에 문제가 있습니다.

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
NSString *date = cell.textLabel.text; 
NSString *entry = cell.detailTextLabel.text; 

if (self.detailsViewController == nil) 
{ 
DiaryDetailsViewController *d = [[DiaryDetailsViewController alloc] 
             initWithNibName:@"DiaryDetailsViewController" 
             bundle:[NSBundle mainBundle]]; 
self.detailsViewController = d; 
} 
[self.detailsViewController setTexts:date entry:entry]; 
[self.navigationController pushViewController:self.detailsViewController 
                animated:YES]; 

setTexts의 코드는 다음과 같습니다 : 좀 레이블 텍스트를보기 컨트롤러를 변경하고 설정하려면이 코드를 사용

-(void) setTexts:(NSString *)date entry:(NSString *)entry 
{ 
    [self.dateLabel setText:date]; 
    [self.entryLabel setText:entry]; 
}​ 

이 뷰가 변경 될 때 처음 작동하지 않는 코드, 그래서 모든 레이블은 비어 있지만 다음에보기가 변경 될 때 레이블 텍스트를 변경합니다.

여기에 뭔가 잘못되었다는 것을 알고 있지만 찾을 수없는 것 같습니다. 그래서 여기서 무엇이 일어나고 있습니까? 보기가 처음 열릴 때 텍스트가 변경되지 않는 이유는 무엇입니까?

감사합니다.

답변

1

DiaryDetailsViewController 뷰가 nil이므로 이러한 현상이 발생합니다. 뷰 컨트롤러가 navContoller로 푸시 된 후 레이블을 업데이트해야합니다.

DiaryDetailsViewController *d = [[DiaryDetailsViewController alloc] initWithText:cell.textLabel.text detailText:cell.detailTextLabel.text; 

[self.navigationController pushViewController:self.detailsViewController animated:YES]; 

...

추가 2 개 변수 텍스트 및 세부

- (id)initWithText:(NSString *)text detailText:(NSString *)detail { 
... 
self.text = text; 
self.detailText = detail; 
} 

- (void)viewDidLoad { 

....

[self.dateLabel setText:text]; 
    [self.entryLabel setText:detailText ]; 
} 
0

의 속성 당신이 그것을 당신이하는 것보다 처음 호출 먼저 전화주세요.

[self.detailsViewController setTexts : 날짜 입력 : 항목];이 메서드는로드를 표시하므로 보이지 않지만 두 번째 시간 동안 객체 ID가 메모리를로드합니다. 그래서 그 전화는 적절하게 보여줍니다. [viewcontoller를 누른 후에 호출해야하는 문제를 해결하기 위해

관련 문제