2011-09-29 10 views
0

이상한 문제가 있습니다. 사용자 지정 UITableViewCell 있고 각 셀 UIButton 및 UITextField 있습니다. 버튼을 클릭하면 텍스트 필드 값이 일정한 값으로 변경됩니다.배열에 삽입하는 cellForRowAtIndexPath

이제 cellForRowAtIndexPath 메서드에서 나는이있다 : 나는 두 개의 셀이있는 경우 그래서

folderTitleTextView.tag=indexPath.row; 
    [arrayOfTextFields insertObject:folderTitleTextView atIndex:indexPath.row]; 
    NSLog(@"indexpath.row:%i", indexPath.row); 
    NSLog(@"text fields count %i", [arrayOfTextFields count]); 

을, 나는 테이블을 다시로드 할 때마다, 그것은이를 교체해야에도 arrayofTextFields에 둘 이상의 개체를 추가합니다 기존의 것들. 나는 두 개의 셀을 가지고 있고 테이블 3 회 다시로드한다면, 다음 몇 가지 이유 arrayOfTextFields 카운트에 대한 모든 0의 태그로 시작, 그래서 viewWithTag:0과 뷰를 액세스 할 때 나 때문에 8

답변

1

folderTitleTextView.tag=indexPath.row; 좋은 생각이 아닌 것입니다 행 0을 설정할 때 별난 결과가 나옵니다.

내가 시도 arrayOfTextFields의 항목 수를 확인도 제안하고 arrayOfTextFields

에 대한 [arrayOfTextFields replaceObjectAtIndex:indexPath.row withObject:folderTitleTextView]; 또는 [arrayOfTextFields insertObject:folderTitleTextView atIndex:indexPath.row]; 현재 개수에 따라 사용하는 것이이 :

folderTitleTextView.tag = (indexPath.row + 100); 
if ([arrayOfTextFields count] <= indexPath.row) { 
    [arrayOfTextFields insertObject:folderTitleTextView atIndex:indexPath.row]; 
} else { 
    [arrayOfTextFields replaceObjectAtIndex:indexPath.row withObject:folderTitleTextView]; 
} 
NSLog(@"indexpath.row:%i", indexPath.row); 
NSLog(@"text fields count %i", [arrayOfTextFields count]); 
+0

감사를 도와. 나는이 문제를 해결할 수 있었다 : if (indexPath.row <[arrayOfTextFields count]) [arrayOfTextFields replaceObjectAtIndex : indexPath.row withObject : folderTitleTextView]; else [arrayOfTextFields addObject : folderTitleTextView]; ' – Snowman

+0

아주 멋지다! 다행 이군. @mohabitar. – chown

1

문제는 당신이해야 할 노력하고있다 ?

지금은 셀이 표시 될 때마다 배열에 textView를 추가합니다.

세포가 1 개인 경우 cellForRowAtIndexPath:이 1 번 호출 되었기 때문에 배열에 1 개의 textView가 있습니다.
다른 셀을 추가하면 총 2 개의 셀이 추가됩니다. cellForRowAtIndexPath는 다른 두 번 호출되며 이미 하나의 배열에 2 개의 textViews를 추가합니다. -> 3
다른 셀을 추가하면 cellForRowAtIndexPath가 3 개의 textViews를 추가합니다. 이미 존재하는 3 -> 6

결과에 대한 설명이 너무 많습니다.


제안 사항은 해당 배열을 제거하고 태그를 없애는 것입니다. 그럴 가능성이 가장 높습니다.

이 같은 뭔가 셀에 액세스 할 수 있습니다

- (IBAction)buttonPressed:(UIButton *)sender { 
    UIView *contentView = [sender superview]; 
    UITableViewCell *cell = (UITableViewCell *)[contentView superview]; 
    // you should assign a tag to the textField of your cell. Use the same tag for each textView in all cells. 
    UITextField *textField = (UITextField *)[cell viewWithTag:42]; 
    textField.text = @"Foo"; 
} 
+0

각 사용자 정의 셀에는 셀 제목을 포함하는 UITextField와 편집을 위해 텍스트 필드를 활성화하고 첫 번째 응답자로 지정하는 버튼이 있습니다. 그래서 내가 뭘 하려는지 버튼을 누르면, 그것은 배열에서 특정 텍스트보기에 액세스하고 편집 할 수 있도록합니다. 그러나 올바른 텍스트보기에 액세스 할 수 있도록 태그를 설정해야합니다. 5 개의 셀이있는 경우 5 개의 버튼이 있으며 태그를 설정하지 않으면 입력 할 때 편집 할 텍스트 필드를 알 수 없습니다. – Snowman

+0

내가 추가 한 두 번째 부분을 보았습니까? 아마 태그가 필요 없으며 textView를 저장하는 배열이 필요하지 않을 것입니다. –

+0

흠, 좋은 생각인데 내 사용자 정의 셀에는 자체 클래스가 없으며 테이블을 소유하는 클래스와 같은 클래스가 소유합니다.그래서 나는 셀의 folderTitleTextView에 접근 할 수 없었다. 그렇지 않습니까? – Snowman

관련 문제