2012-07-11 1 views
2

내가 달성하려고하는 기능은 먼저 완벽하게 표시되는 UITableView에 두 행을 표시하고 있습니다. 그런 다음 didSelectRowAtIndexpath:에서 numberOfRowsUITableView에 추가합니다. numberOfRows과 필요한 데이터를 추가 한 후 UITableView을 다시로드합니다.cellForRowAtIndexPath가 필요한 횟수만큼 호출되지 않음

내 문제는 내가 이전 numberOfRows 값이 (내가 제대로 통과 확인했다)하지만 cellForRowAtIndexpath:이 두 배 후 호출 numberOfRowsInSection:에 새로운 행의 수를 통과하고 있다는 점이다.

내 코드 :

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    return self.currentSubCategoryRows; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    // My code for cell construction goes here 
} 

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    [self.arrWithAdditionalValues addObjectsFromArray:[self.dictSubCategoriesLevel3 objectForKey:[NSString stringWithFormat:@"%d",rowOpened]]]; 
    self.currentSubCategoryRows += self.arrWithAdditionalValues.count; 
      [tableView reloadData]; 
} 

어떤 이유가 될 수 있을까?

도움이 될 것입니다!

+1

행의 수를 늘린 코드를 여기에 표시 할 수 있습니까? –

+0

코드를 알려주십시오. – AJS

+0

코드로 내 질문을 편집했습니다 ... –

답변

5

해결책을 찾았습니다.

내가 크기를 조정 한 바와 같이 UITableViewcellForRowAtIndexPath:의 행의 수에 따라, UITableView의 다음 부분이 보이지 않는 이유를 내, 그건, 눈에 보이는되지 않습니다 UITableView의 부분, cellForRowAtIndexPath:가 호출되지 않습니다.

죄송합니다.

도움을 주셔서 감사합니다.

2

봅니다 viewWillAppear

- (void)viewWillAppear:(BOOL)animated { 
    [tableview reloadData]; 
    } 
+0

하지만 didSelectRowAtIndexpath에서 다시로드하고 싶습니다. 행을 선택하면 새 행을 추가하고 싶습니다 ... –

4

cellForRowAtIndexPath에서 테이블을 다시로드 : 단지 바로 그리기에 필요한라고한다. 호출 할시기를 제어하지 않고 해당 메소드를 빌드해야합니다.

+0

테이블 뷰를 스크롤하자마자 바로 업데이트 될 것이라고 생각합니다. reloadData에서 업데이트하고 싶습니까? –

+0

고마움, 당신의 대답은 나에게 힌트를주었습니다 ... –

+0

cellForRowAtIndexPath를 처리해야한다면 실수로 된 것입니다. 그 방법은 당신의 필요를위한 것이 아니라 시스템을위한 것입니다. 그것이 필요할 때 그리고 필요한만큼 여러 번 방법을 호출하게하십시오. 수행해야하는 계산은 필요할 때 실행할 수있는 다른 방법으로 수행해야합니다. – Gabriel

관련 문제