전체 테이블을 다시로드하지 않고 UITableView에서 특정 행 업데이트

종 와이 탁

reloaddata없이 tableview의 레이블 텍스트를 업데이트하고 싶습니다. 나는 시도 ((uilabel *)[self.tableview viewWtihTag:10]).text = Newstring하지만 작동하지 않습니다.

맞습니까? 아니면 다른 해결책이 있습니까?

JLT

이 방법을 사용하는 - (void)reloadRowsAtIndexPaths:(NSArray<NSIndexPath *> *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation것이 정확합니다. 그러나 각 셀의 모든 행에로드 할 값을 추적 한 다음 사용자가 테이블을 스크롤 할 때 행이 다시로드 될 때마다 액세스해야합니다.

다음은 샘플입니다.

@interface ViewController ()<UITableViewDelegate, UITableViewDataSource>

@property NSMutableArray *labelValueListForSection0;
@property NSMutableArray *labelValueListForSection1;
@property NSMutableArray *labelValueListForSection2;

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    _labelValueListForSection2 = [[NSMutableArray alloc] initWithObjects:@"value1", @"value2", @"value3", nil];
}

- (void)changeAnItem
{
    [_labelValueListForSection2 setObject:@"ChangedValue" atIndexedSubscript:1];

    [_table reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:1 inSection:2]] withRowAnimation:UITableViewRowAnimationNone];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *identifier = @"SimpleTableItem";

    UITableViewCell *tableCell = [tableView dequeueReusableCellWithIdentifier:identifier];

    if(tableCell == nil)
    {
        tableCell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
    }

    switch(indexPath.section)
    {
        case 0:

            tableCell.textLabel.text = @"Test";

            break;

        case 1:

            tableCell.textLabel.text = @"Test";

            break;

        case 2:

            tableCell.textLabel.text = [_labelValueListForSection2 objectAtIndex:indexPath.row];

            break;

        case 3:

            tableCell.textLabel.text = @"Test";

            break;

        case 4:

            tableCell.textLabel.text = @"Test";

            break;

        default:
            break;
    }

    return tableCell;
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 5;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 3;
}

@end

보시다시피 각 행의 값을 추적하고 배열 안에 저장하고 있습니다. 제 경우에는 특정 섹션의 각 행에 대한 값 배열이 있습니다. 그래서이 방법은

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath; 

호출되면 해당 행에 할당되어야하는 값을 가져옵니다.

모르는 경우 iOS는 더 나은 성능과 더 나은 메모리 관리를 위해 각 테이블 셀을 재사용하고 있습니다. 따라서 내 행 중 하나의 값이 다른 행에서 중복되는 이유와 같은 경우가 발생하면 tableCell의 해당 인스턴스가 다른 행에서 재사용되기 때문입니다.

따라서 셀이로드 될 때마다 값이 정확해야합니다. 각 행의 값을 추적하고 다시로드 될 때마다 해당 셀에 다시 할당해야합니다.

이것이 문제를 해결하는 데 도움이되기를 바랍니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

테이블 행에서 특정 필드를 편집하고 MySQL 테이블에서 편집 된 값을 업데이트합니다.

분류에서Dev

한 테이블에서 다른 테이블로 특정 행 업데이트

분류에서Dev

테이블 행에서 jquery의 id로 특정 값을 얻지 못하고 '정의되지 않음'이 표시됩니다.

분류에서Dev

MySQL-행을 줄이지 않고 다른 테이블 데이터에서 열 업데이트

분류에서Dev

전체 행을 업데이트하지 않고 행의 특정 열 값을 변경하는 방법 Java Derby Data Base

분류에서Dev

PHP에서 전체 페이지를 다시로드하여 특정 div 새로 고침

분류에서Dev

전체 테이블을 새로 고치지 않고 특정 DataGrid 열 셀 값을 새로 고치는 방법

분류에서Dev

Javascript에서 테이블의 전체 행을 비활성화하지 않음

분류에서Dev

OR 조건에서 모든 열 이름을 지정하지 않고 전체 테이블에서 빈 셀 찾기

분류에서Dev

codeigniter-데이터베이스에서 삭제하지 않고 특정 테이블 행 제거

분류에서Dev

테이블 A에서 업데이트 한 후 테이블 A의 특정 열을 업데이트하는 트리거

분류에서Dev

전체 시스템을 업데이트하지 않고 fedora에서 커널 업데이트

분류에서Dev

전체 시스템을 업데이트하지 않고 fedora에서 커널 업데이트

분류에서Dev

테이블 행이 첫 번째 테이블에서 전체 길이로 늘어나지 않고 두 번째 테이블에서는 잘 작동합니다.

분류에서Dev

특정 데이터 행을 기반으로 한 데이터 테이블에서 다른 데이터 테이블로 특정 행을 복사하는 방법

분류에서Dev

Excel 또는 Google 양식-테이블에서 특정 셀을 식별하고 다른 워크 시트 데이터의 값을 업데이트하는 방법

분류에서Dev

SQL Server : 커서를 사용하지 않고 이전에 업데이트 된 행 값을 기반으로 행을 업데이트 할 수 있습니까?

분류에서Dev

테이블이 특정 행 수에 도달하면 PHP / MySQL이 업데이트를 중지합니다.

분류에서Dev

Laravel에서 테이블을 검색하지 않고 테이블의 모든 행을 업데이트하는 방법은 무엇입니까?

분류에서Dev

HTML에서 특정 테이블 행의 데이터를 업데이트하는 방법은 무엇입니까?

분류에서Dev

셀 값을 기준으로 특정 데이터 (전체 행이 아님!)를 다른 시트에 복사

분류에서Dev

어떻게 CSV 파일에서 특정 행에 액세스하고 행의 값을 업데이트하는?

분류에서Dev

Google 스프레드 시트 트리거는 테이블의 값을 업데이트하지만 이전 값을 변경하지 않고 그대로 둡니다.

분류에서Dev

페이지에서 사용자 지정 새로 고침 버튼을 클릭 할 때 테이블에서 데이터가 업데이트되지 않습니다.

분류에서Dev

이전 행을 업데이트하지 않고 즉시 삽입 된 행 업데이트

분류에서Dev

SQL-테이블의 특정 행을 동일한 테이블에 복사하고 해당 값 변경

분류에서Dev

반복하지 않고 Sqlite의 동일한 테이블에서 직렬을 사용하여 특정 행의 복사본을 만듭니다.

분류에서Dev

nodejs를 사용하여 전체 페이지를 새로 고치지 않고 특정 콘텐츠를 업데이트하십시오.

분류에서Dev

테이블의 모든 td에서 정확한 "Retired"문자열을 검색하십시오. true이면 해당 테이블의 전체 행을 숨 깁니다.

Related 관련 기사

  1. 1

    테이블 행에서 특정 필드를 편집하고 MySQL 테이블에서 편집 된 값을 업데이트합니다.

  2. 2

    한 테이블에서 다른 테이블로 특정 행 업데이트

  3. 3

    테이블 행에서 jquery의 id로 특정 값을 얻지 못하고 '정의되지 않음'이 표시됩니다.

  4. 4

    MySQL-행을 줄이지 않고 다른 테이블 데이터에서 열 업데이트

  5. 5

    전체 행을 업데이트하지 않고 행의 특정 열 값을 변경하는 방법 Java Derby Data Base

  6. 6

    PHP에서 전체 페이지를 다시로드하여 특정 div 새로 고침

  7. 7

    전체 테이블을 새로 고치지 않고 특정 DataGrid 열 셀 값을 새로 고치는 방법

  8. 8

    Javascript에서 테이블의 전체 행을 비활성화하지 않음

  9. 9

    OR 조건에서 모든 열 이름을 지정하지 않고 전체 테이블에서 빈 셀 찾기

  10. 10

    codeigniter-데이터베이스에서 삭제하지 않고 특정 테이블 행 제거

  11. 11

    테이블 A에서 업데이트 한 후 테이블 A의 특정 열을 업데이트하는 트리거

  12. 12

    전체 시스템을 업데이트하지 않고 fedora에서 커널 업데이트

  13. 13

    전체 시스템을 업데이트하지 않고 fedora에서 커널 업데이트

  14. 14

    테이블 행이 첫 번째 테이블에서 전체 길이로 늘어나지 않고 두 번째 테이블에서는 잘 작동합니다.

  15. 15

    특정 데이터 행을 기반으로 한 데이터 테이블에서 다른 데이터 테이블로 특정 행을 복사하는 방법

  16. 16

    Excel 또는 Google 양식-테이블에서 특정 셀을 식별하고 다른 워크 시트 데이터의 값을 업데이트하는 방법

  17. 17

    SQL Server : 커서를 사용하지 않고 이전에 업데이트 된 행 값을 기반으로 행을 업데이트 할 수 있습니까?

  18. 18

    테이블이 특정 행 수에 도달하면 PHP / MySQL이 업데이트를 중지합니다.

  19. 19

    Laravel에서 테이블을 검색하지 않고 테이블의 모든 행을 업데이트하는 방법은 무엇입니까?

  20. 20

    HTML에서 특정 테이블 행의 데이터를 업데이트하는 방법은 무엇입니까?

  21. 21

    셀 값을 기준으로 특정 데이터 (전체 행이 아님!)를 다른 시트에 복사

  22. 22

    어떻게 CSV 파일에서 특정 행에 액세스하고 행의 값을 업데이트하는?

  23. 23

    Google 스프레드 시트 트리거는 테이블의 값을 업데이트하지만 이전 값을 변경하지 않고 그대로 둡니다.

  24. 24

    페이지에서 사용자 지정 새로 고침 버튼을 클릭 할 때 테이블에서 데이터가 업데이트되지 않습니다.

  25. 25

    이전 행을 업데이트하지 않고 즉시 삽입 된 행 업데이트

  26. 26

    SQL-테이블의 특정 행을 동일한 테이블에 복사하고 해당 값 변경

  27. 27

    반복하지 않고 Sqlite의 동일한 테이블에서 직렬을 사용하여 특정 행의 복사본을 만듭니다.

  28. 28

    nodejs를 사용하여 전체 페이지를 새로 고치지 않고 특정 콘텐츠를 업데이트하십시오.

  29. 29

    테이블의 모든 td에서 정확한 "Retired"문자열을 검색하십시오. true이면 해당 테이블의 전체 행을 숨 깁니다.

뜨겁다태그

보관