2011-10-06 6 views
0

UINavigationController 안에 사용하고 있습니다.현재 화면에서 UITableView를 새로 고치는 방법

첫 화면에는 alen, john, smith라는 이름의 테이블보기가 있습니다. 그리고 그들은 3 기록입니다. 이제 두 번째 화면으로 이동하여 데이터베이스에서 세 레코드의 이름을 모두 업데이트합니다. 내 첫 컨트롤러에서 UITableView이 표시되면 대리자 메서드 내에서 [seld.tableView reloadData]을 사용했습니다. 그리고 그 첫 번째 화면으로 돌아올 때마다 내 viewWIllApear delegateemethod가 호출되고 내 UITableView이 새로 고침됩니다.

이제 [self.tableview reloadData]viewWIllApear이 아닌 내 자신의 메서드에서 호출하면 문제가 발생합니다. 내 ViewDidLoad 메서드를 호출하지만 내 레코드를 업데이트하기 위해 내 uitableView 대리자를 호출하지 않습니다. 어느 누구도 같은 화면에 남아서 내 tableView를 업데이트 할 수 있습니다. ? 편집을 할

많이

감사 :

- (void)viewDidAppear:(BOOL)animated { 
     [activityIndicator stopAnimating]; 
     [self.tableView reloadData]; 
     [super viewDidAppear:animated]; 
    } 

이 내 ViewDidappear 방법입니다. 내가 원하는 건 언제든지 같은 UITableView 화면에 남아있는 버튼을 클릭 할 때마다 내 TableView를 다시로드해야하는데 데이터 배열에 변경 사항이 있는지 여부입니다.

+0

일부 코드는 ur 코드 pl – booleanBoy

답변

0

구조의 버튼은 어디에 있습니까? 프로그래밍 방식으로 생성 되었습니까? 은 uibutton 하위 클래스입니까? 즉 호출하는 메소드는 어디에 있습니까? 그것은 당신 자신의 메서드에서 tableViewController를 참조하는 데 문제가있는 것 같은데?

아마도 tableViewController에서 메소드를 만든 다음 버튼에서 호출해야합니다. 메소드 코드를 보여 주시고 메소드가 어떤 파일인지 알려주십시오.

0

예제 A : 인터페이스 빌더에서 버튼을 생성하거나 다른 모든 조치를 트리거 할 수 있습니다. 있는 tableview는 다음과 같은 방법을 사용 보유의 ViewController 내부 :

- (IBAction)updateTable:(id)sender 
{ 
    [self.tableview reloadData]; 
} 

은 분명히 당신은 IB의 조치를 콘센트에 연결해야합니다.

예제 B : 프로그래밍 방식으로 단추를 만듭니다. 당신의 ViewController에서

// inside your loadView or viewDidLoad method 
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
[button addTarget:self 
     action:@selector(updateTable) 
forControlEvents:UIControlEventTouchDown]; 
[button setTitle:@"Show View" forState:UIControlStateNormal]; 
button.frame = CGRectMake(x,y,width,hieght); 
[yourView addSubview:button]; 

:

-(void)updateTable 
{ 
    [self.tableView reloadData]; 
} 
0

당신의 UITableViewDelegate 방법 호출을 시작하지 않을 경우, 다음 중 당신의 tableView 콘센트가 설정되지 않았거나 tableViewdelegate가 설정되어 있지 않습니다. 여러 뷰 컨트롤러 (하나는 tableView, 다른 하나는 UIButton)를 가지고있는 것처럼 보이기 때문에 뷰 컨트롤러간에 전달하는 방법을 고려해야합니다. 즉, tableView (캡슐화가 잘 안된다.)를 통해 위임/프로토콜 방법 호출, NSNotification 또는 기타 적절한 방법을 통해.

+0

이지만 내 uitableview 콘센트가 설정되어 있습니다. 그것은 실제로 내 화면이 다시 나타날 때마다 데이터를로드합니다. 그렇다면 내가 [self.tableView reloadData]를 호출 할 때 리프레시되지 않습니다. ??? – Shah

+0

그 줄에 중단 점이있는 디버거를 실행하고 [self tableView], [[self tableView] delegate]의 값을 확인하는 것이 좋습니다. 이것이 테이블 뷰와 별도의 뷰 컨트롤러에 있고 위임 코드 인 경우에는 그 값이 설정되지 않습니다. –

관련 문제