2011-03-07 6 views
0

다른 클래스에서 tableView를 다시로드하려고합니다. 콘솔의 일부 NSLog가 끝나면 데이터가 변경되지만 변경되지는 않습니다.다른 클래스의 reloadData?

RootViewController *test = [[RootViewController alloc] init]; 
// Set up database connection 
NSString *myDB = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"flashpics.db"]; 
database = [[Sqlite alloc] init]; 
[database open:myDB]; 

[database executeNonQuery:@"INSERT INTO albums (id, name, connections) VALUES (?,?,'No Connections')", theID, theName]; 
[test.listOfItems addObject:theName]; 


RootViewController *controller = [[RootViewController alloc] init]; 
[controller.tableView reloadData]; 

[self dismissModalViewControllerAnimated:YES]; 

당신이 날은 아마 존재하는 가장 쉬운 질문 중 하나를 해결하는 데 도움 주실 래요

SecondViewController.m : 아래의 일부 코드이다?

덕분에, Coulton

수정 # 1 : NSLogs는 다음을 표시합니다. 이 일이 무엇이든 할 수 있을까요? __NSAutoreleaseNoPool(): Object 0x5883000 of class UITableView autoreleased with no pool in place - just leaking

편집 # 2 : SecondViewController.m

편집 # 3에 더 많은 코드를 추가 : 그것을 작동하지 않는 몇 가지 이유.

SecondViewController.m

RootViewController *controller = [[RootViewController alloc] init]; 
[RootViewController refreshTableView]; 

RootViewController.m

- (void) refreshTableView { 
[self.tableView reloadData]; 
NSLog(@"Refreshing TableView - %@", listOfItems); 
} 

삽입 I '니토'배열된다. 그런 다음 SecondViewController.m에서 reloadTableView를 RootViewController.m으로 호출했습니다. 출력을 얻었지만 tableView를 업데이트하지 않았습니다. 아래는 NSLog입니다.

Refreshing TableView - (
"Default Album", 
"Hello.", 
"This is cool!", 
hi, 
neato 
) 

P. 나는 결과를 얻지 못하지만 NSLog를 통해 말하도록 프로그램 한 내용을 얻습니다.

답변

1

RootViewController를 두 번 초기화합니다. 너무 많은 두 번 상상해보십시오. 보기 컨트롤러에 대한 참조를 찾고 listOfItems에 항목을 추가해야합니다. 그런 다음 컨트롤러의 UITableView에서 reloadData으로 전화하십시오.

+0

이제 네가 말 했으니 까. 어떤 클래스에서 초기화해야합니까? 그리고 어떻게해야합니까? 내 - 초기화에서? – iosfreak

+0

나는 한 무리의 코드를 남겨 뒀지 만 NSMutableArray에서 데이터를 채울 데이터를 얻는다. 간단한 샘플 코드를 제공해 주시겠습니까? 무리 감사! – iosfreak

+0

많은 부분이 테이블에 렌더링하려는 것에 달려 있기 때문에 너무 자세하게 설명 할 수는 없지만 시작하기를 기대하는 예제가 포함되어 있습니다. – Dimitry

1

문제는 why? 또는 what do you really want to do?

당신의 코드를 훨씬 이해가되지 않습니다, 당신은 RootViewController의 새로운 인스턴스를 작성하고있는 tableView가 당신에게 데이터를 보여 전에 당신은 reloadData을 요구하고있다. 테이블 뷰에 데이터가 있기 전에 다시로드 할 필요가 없습니다. 하지만 방금 만든 새 인스턴스 대신 이전 인스턴스를 참조하려고한다고 생각합니다.

이것이 내가 생각하는 경우, SecondControl이 tableView:didSelectRowAtIndexPath:에서 생성되고 내비게이션 기반 프로젝트 인 navigationController [self.tableView reloadData];- (void)viewWillAppear:(BOOL)animated에서 RootViewController로 호출해야합니다.

하지만 코드가 의미가 없기 때문에 (비록이 기능이 훌륭하지만) 추측하고 있습니다. tableview에 데이터가 없으므로이 단계에서 tableview를 다시로드 할 필요가 없습니다.

+0

나는 쉽게 읽을 수 있도록 많은 코드를 생략했습니다. 사용자가 앨범을 추가하면 앨범이 재생됩니다. 배열과 데이터베이스에 새로운 문자열을 추가했습니다. 다른 클래스의 tableView가 만들어졌습니다. 나는 그것에 NSLogs를 달았고 실제로 그것을 추가했다. 하지만 특정 tableView reloadData 실행할 때 데이터를 realod 있지 않습니다. 사실, 아무 것도하지 않습니다. – iosfreak

+0

여전히 viewController를 만드는 동일한 메서드에서 reloadData를 호출하는 것은별로 의미가 없습니다. 컨트롤을 다른 뷰 (사용자가 앨범을 추가하는 곳)에 전달하면 이미이 메서드를 벗어났습니다. --- 더 읽기 쉽도록 중요한 코드를 생략하지 않아야합니다. 무슨 일이 일어나고 있는지 파악하기가 매우 어렵습니다. –

+0

제 질문에 SecondViewContoller.m에 코드를 추가했습니다. – iosfreak