2011-12-06 3 views
0

일반적으로 실제로는 정말 간단한 작업과 같습니다.보기가 있으며 다른보기에서 변경된 데이터를 다시로드하려고합니다. 그러나 : 그것은 UITableView이 아니며 InterfaceBuilde을 사용하지 않았으므로 뷰는 프로그래밍 방식으로 생성됩니다. TextField에 표시되는 값은 NSDictionary에 있습니다. 다른보기에서 표시 할 값에 대한 키가 변경되었으므로보기가 다시 돌아 오면 새 값을보고 싶습니다. 일반적인 UIView에서 데이터 새로 고침

- (void)loadView 
{ 
... 
NSMutableDictionary *selection = [[ValueDispatcher dispatcher] selectionIndex]; 
NSDictionary *labels = [[ValueDispatcher dispatcher] labelDic];  
NSDictionary *values = [[ValueDispatcher dispatcher] valDic]; 

NSEnumerator *theKeys = [labels keyEnumerator]; 
while (key = [theKeys nextObject]) 
{ 
    CGRect frame = CGRectMake(10, i, 300, 30); 
    UILabel *label = [[UILabel alloc] initWithFrame:frame]; 
    [label setText:[labels objectForKey:key]]; 
    [[self view] addSubview:label]; 

    CGRect fieldFrame = CGRectMake(10, i + 40, 300, 30); 
    textField = [[UITextField alloc] initWithFrame:fieldFrame]; 

    [textField setText:[[values objectForKey:key] objectForKey:[selection objectForKey:key]]]; 
    [[self view] addSubview:textField]; 
} 
    .... 

내보기가 돌아

이전 값이 계속 변경 디스플레이의 아무것도를 인도 표준시 : 그래서, 여기에 내 코드입니다. 어떤 방법을 사용해야합니까? 나는 reloadInputViews를 이미 시도했지만 작동하지 않았다. 오직 (reloadData)만이 TableView에서 작동하는 것으로 알고있다 ...

+1

'loadView'대신에'viewWillAppear :'에서 값을 설정할 수 있습니다. – Kjuly

답변

2

값을 변경하는 동안보기가 숨김/밀기/화면을 비우는 경우 이후 예를 통해 네비게이션 스택에서 터지는 경우 필드 업데이트를 위해 viewWillAppear:animated:을 사용하는 것이 좋습니다. 어떤 경우이든, 업데이트와 뷰 생성을 분리해야합니다.

즉, loadView에서 해당보기를 만들고 다른 방법 (예 : updateData)에서 표시된 데이터를 업데이트합니다. 이러한 하위 뷰에 대한 참조를 유지하려면 viewController 내에서 태그 또는 적절한 인스턴스 변수를 사용할 수 있습니다.

로드 뷰 내에서 수동으로 updateDataviewWillAppear:animated:을 호출 할 수 있습니다.