2010-03-09 4 views
0

나는 tableView 선택한 행에 문제가 있습니다. 내가 선택한 행을 선택하면 이전 탐색 컨트롤러로 돌아 왔을 때 행이 선택 해제되었습니다. 그 아이폰은 어떤 행이 선택되었는지 기억할 수 있습니까? 컨트롤러를 누르면 선택된 행을 기억하고 파란색이 될 수 있습니까?항상 선택된 tableView 행을 어떻게 볼 수 있습니까? (아이폰)

답변

0

선택한 행 색인을 파일 (info.plist? properties.plist)에 저장하여 iPhone에서 상태를 유지하는 것이 좋습니다. 그런 다음 해당보기로 돌아 가면 선택한 행을 파일에서 다시 가져 와서 선택한 행 인덱스를 변경합니다.

+0

을 내가 파일에 선택된 행의 인덱스를 저장할 수있는 방법

그런 다음 목록 컨트롤러는 상속 -viewWillAppear을 대체 할 수 있습니다 ? – app

+0

http://stackoverflow.com/questions/905542/how-to-write-data-in-plist 또는 iPhone 개발을 처음 사용하는 경우 Titanium Appcelerator를 살펴보고 iPhone 개발을 훨씬 쉽게 할 수 있습니다. Javascript의 iPhone 앱. – Kyle

+0

앱이 Info.plist에 절대 쓰면 안됩니다. (사용자 데이터가 아닌) 응용 프로그램 상태를 저장하는 더 좋은 장소는 기본 시스템에 있습니다 (NSUserDefaults Class Reference 참조). http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/Reference/Reference.html – jlehr

1

개체가 일반적으로 '기억'하는 방식은 인스턴스 변수에 개체를 저장하는 것입니다. 따라서 선택된 행을 추적하는 간단한 방법은 NSIndexPath * 유형의 인스턴스 변수와 속성을 목록 컨트롤러에 추가하는 것입니다. 그런 다음이 속성을 사용하여 테이블보기 컨트롤러의 -tableView:didSelectRowAtIndexPath: 메서드에 전달 된 indexPath를 저장할 수 있습니다. 다음과 같이 행을 다시 선택하기 위해 테이블보기로 메시지를 보내는 방법 :

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

    // Good idea to reload the table view's cells 
    // in case the underlying data was changed by 
    // another view controller. 
    [[self tableView] reloadData]; 

    // Assuming you added a selectedIndexPath property 
    // to your list controller... 
    // 
    if ([self selectedIndexPath] != nil) 
    { 
     // Select the row. Note that you need to be sure 
     // that the table view is scrolled so that the 
     // selected row is visible. 
     [[self tableView] selectRowAtIndexPath:[self selectedIndexPath] 
             animated:NO 
           scrollPosition:UITableViewScrollPositionMiddle]; 
     // Get rid of the saved selection 
     [self setSelectedIndexPath:nil]; 
    } 
} 
관련 문제