2011-03-20 6 views
3

뷰에 하위 뷰로 추가 된 UITableView가 있습니다. 행을 선택할 때 새로운보기가 pushViewController:과 함께 표시되며 사용자는 Back Button을 눌러 UITableView로 돌아갈 수 있지만 셀은 여전히 ​​선택됩니다.subview 인 UITableView에서 행 선택 해제

보기가 나타나면 선택을 취소 할 수 있습니까?

다음 코드를 사용해야한다고 읽었지 만 제대로 작동하지 않습니다. 오류 없음, 경고 없음, 없음.

[tableProgram deselectRowAtIndexPath:[tableProgram indexPathForSelectedRow] animated:NO];

+0

Where are are 당신은'deselectRowAtIndexPath' 메소드를 넣고 있습니까? 그것은'didSelectRowAtIndexPath' 델리게이트 콜백에 있습니까? 그렇지 않다면 거기에 넣으십시오. – lxt

+0

나는 그것을 'viewDidDisappear'에 넣었습니다. 나는 다른 것을 시도 할 것이다. – simonbs

+0

잘하면 그게 당신을 위해 그것을 해결할 것입니다 - 손가락이 교차! – lxt

답변

9

당신은 당신의 jQuery과의 대리자의 didSelectRowAtIndextPath 방법으로 행을 선택 해제합니다. 이런 식으로 보일 것입니다.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 

    /* initialize your view controller here v and then push it */ 
    SomeViewController *v = [[[SomeViewController alloc] init] autorelease]; 
    [self.navigationController pushViewController:v animated:YES]; 
} 

점은 didDeselectRowAtIndextPath 방법과 혼동 - intelisense에서 방법을 선택할 때 사람들이 많은 관심을 지불하지 않는 한이 발생합니다.

+0

고맙습니다. – simonbs

+0

당신은 오신 것을 환영합니다. –

2

당신이 사용할 수있는 또 다른 장소는 내부 viewDidAppear

- (void)viewDidAppear:(BOOL)animated 

삽입이다가 나올 때 셀 후 클릭하고 다른 뷰 컨트롤러에 밀어하지만 선택 해제 선택된 상태로 유지

NSIndexPath *indexPath = [tableView indexPathForSelectedRow]; 

[tableView deselectRowAtIndexPath:indexPath animated:YES]; 

다음 원래의 뷰 컨트롤러로 돌아가서 마지막으로 선택한 행에 대한 시각적 큐를 사용자에게 제공합니다.

+0

그걸 시도해 보니 (애니메이션을 얻기 위해) 작동 하겠지만, 서브 뷰에서'viewDidAppear : (BOOL) animated'와'viewWillAppear : (BOOL) animated'가 호출되지 않는 것 같습니다. – simonbs

0

인용 SimonBS는 :

은 시도하고 (애니메이션을 얻을 에) 일 것이라고 기대하지만 두 viewDidAppear 것으로 보인다 : 때로 믿을 수 (BOOL) 애니메이션 : (BOOL) 애니메이션 및 viewWillAppear ' 은 하위 뷰에있을 때 호출됩니다.

honcheng에 의한 코드는 그냥있는 TableView의 수퍼에서 사용할 필요가

-(void) viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 

    NSIndexPath *indexPath = [self.tableViewOutlet indexPathForSelectedRow]; 

    [self.tableViewOutlet deselectRowAtIndexPath:indexPath animated:YES]; 

} 

작동 않습니다. (예 : ViewView 하위 뷰가 포함 된 xib 파일이 해당 뷰 컨트롤러 코드로 이동하고 viewWillAppear를 재정의해야하는 경우, 난 그냥 그랬고 작동합니다! 안녕하세요 시각적 큐!)

관련 문제