2013-07-29 2 views
0

상황 : 내 두 개의 텍스트 필드가 내 .H 파일에 선언되는프로그래밍 만든 텍스트 필드는 텍스트 저장하지 않습니다

:

@interface DetailViewController : UIViewController <UITableViewDelegate, UITableViewDataSource, UIAlertViewDelegate, UITextFieldDelegate> { 
UITextField *countTotalFieldUniversal; 
UITextField *flavorNameUniversal; 
} 

그리고 내하는 .m 파일에서 인스턴스화 :

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath 
{ 
    // Label default cell 
    static NSString *cellIdentifier = @"Cell"; 
    UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 
    if(cell==nil){ 
     cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier]; 
    } 

    //Text fields used for editing 
    countTotalFieldUniversal = [[UITextField alloc] initWithFrame:CGRectMake(200, 10, 85, 30)]; 
    countTotalFieldUniversal. delegate = self; 
    flavorNameUniversal = [[UITextField alloc] initWithFrame:CGRectMake(10, 8, 280, 30)]; 
    flavorNameUniversal.delegate = self; 

    flavorNameUniversal.text = @"Flavor"; 
    countTotalFieldUniversal.text = @"Count"; 

디버깅 시도 :

이 코드를 사용하여 setEditing의 현재 텍스트 필드의 값을 인쇄하려고 :

NSString *flavorText = ((UITextField*)[self.view viewWithTag:1]).text; 
NSString *countText = ((UITextField*)[self.view viewWithTag:2]).text; 
NSLog(@"newFlavorName: %@", flavorText); 
NSLog(@"newCountTotal: %@", countText); 

I만을 얻을 편집되지 않은 원본 레이블 : "맛"과 "백작".

이 코드를 사용하여 setEditing의 현재 텍스트 필드의 값을 인쇄하려고

는 :

NSString * newFlavorName = flavorNameUniversal.text; 
NSString * newCountTotal = countTotalFieldUniversal.text; 
NSLog(@"newFlavorName: %@", newFlavorName); 
NSLog(@"newCountTotal: %@", newCountTotal); 

나는 모두 null 값을 얻을!

텍스트 필드에 대한 내 변경 사항은 전혀 추적되지 않습니다.

+0

또한 테이블보기에 행이 (다시)로드 될 때마다 새 텍스트 필드를 작성합니다. 또는 특정 셀의 텍스트 필드를 요청할 수 있습니다. – Wain

+0

텍스트 필드에 태그를 어디에 설정하고 있습니까? –

+0

cellForRowAtIndexPath에서 태그를 설정 중입니다. – AllieCat

답변

0

텍스트 필드에 대한 변경 사항이 전혀 추적되지 않습니다. 최소한 그들은 당신이 그들에게 손을 얹기 전에 ​​추적되고 나서 풀려났다.

매번 새로운 UITextField 개체를 인스턴스화하지 마십시오. 나는 두 개의 UITextField의 소유권과 그림을 처리하도록 UITableViewCell을 서브 클래 싱하는 것이 좋습니다. 하위 클래스에 두 개의 텍스트 필드 속성 (@property (strong, nonatomic) UITextField *textField1/2)을 지정하고 init에 인스턴스화하거나 setter에서 지연 인스턴스화를 사용하십시오.

UITextField에서 viewController로 데이터를 가져 오려면 위임 (메서드가 UITextFieldDelegate 프로토콜로 선언 됨)을 사용하십시오.

텍스트 필드의 변경 사항을 처리하고 추적해야합니다.

관련 문제