2010-12-23 4 views
10

아래 코드는 효과가없는 것 같습니다. 난 당신이 행에 탭 때 강조는 같은 방법으로 강조되어 싶은UITableView 행을 강조 표시하는 방법

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    ... 
    [cell.textLabel setHighlighted:YES]; 


    return cell; 
} 
+0

이 [post] (http://stackoverflow.com/questions/1845773/how-to-initially-select-a-row-in-uit-tableview) 도움이 될 수 있습니다. – petert

답변

27

당신을위한 셀 라벨 및 액세서리 재 도장 처리 할이 줄 :

[tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone]; 
1

당신은 두 가지 선택을 . 어느 테이블 뷰의 선택 사용 :

[tableView selectRowAtIndexPath: indexPath animated: YES scrollPosition: UITableViewScrollPositionNone]; 

을 또는 테이블 뷰 위임에 테이블 셀의 배경색을 변경 :

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { 
    cell.backgroundColor = ... 
} 
15
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:1 inSection: 0]; 

[tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone]; 

보통

당신이 경우 작동 인터페이스 빌더를 사용하여 인터페이스를 빌드하는 경우 확인할 사항 중 하나는 테이블보기 컨트롤러의보기를 지정했다는 것입니다. 뷰를 실제로 지정하지 않으면이 선택 메시지가 아무 곳에 나 표시되지 않을 수 있습니다.

(인터페이스 빌더 관리자 창에서 테이블보기 컨트롤러를 선택하고 "보기"의 ​​콘센트를 선택하려는 테이블보기로 끌어다 놓음으로써보기를 지정하십시오). 그러나

[tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone]; 

을 :

2

당신은 다른 사람이 언급 한 것처럼, 프로그래밍이 방법을 사용하여 셀을 선택할 수 있습니다이

3
- (BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath { 
    return YES; 
} 

- (void)tableView:(UITableView *)tableView didHighlightRowAtIndexPath:(NSIndexPath *)indexPath { 
    // do something here 
} 

을 사용할 수 있습니다 너무 빨리이 메서드를 호출하지 않도록주의해야합니다.

함유 뷰 컨트롤러 tableView는,이 방법은 viewDidAppear: 내에 호출하도록 초기 initialized 상기 처음.

그래서,이 같은 일을 수행해야합니다

당신이 viewDidLoad에이 전화를 넣어하려고하면
- (void)viewDidAppear:(BOOL)animated 
{ 
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0]; // set to whatever you want to be selected first 
    [tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone]; 
} 

, viewWillAppear: 또는 기타 초기보기 라이프 사이클 호출, 그것은 가능성이 작동하지 않거나 (예 : 이상한 결과를 올바른 위치로 스크롤하지만 셀을 선택하지 않음).

+0

iOS 6에서만 사용 가능 http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableViewDelegate_Protocol/Reference/Reference.html –

21

을 :) 시도

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    ... 
    [cell.textLabel setHighlighted:YES]; 


    return cell; 
} 
+0

iOS 9에서는 'viewWillApear' 및'viewDidAppear '에서 작동하는 것으로 보입니다. 'viewDidLoad'가 아닙니다. – Adrian

관련 문제