2013-02-07 2 views
0

마스터 - 세부 템플릿을 사용 중입니다. 세분화 된 컨트롤이 자세히보기에 있고 MasterViewController를 대리자로 설정했습니다. 이렇게하면 사용자에게 선택권을 부여 할 수 있습니다. 분할 된 컨트롤이 작동하고 MVC에 선택 항목을 전달하는 것을 알고 있습니다.MasterViewController에서 테이블을 업데이트하는 방법

나는 각 선택 사항이 MasterViewController의 테이블 뷰에로드 될 수있는 새로운 데이터 세트를 트리거하기를 원합니다. 내 문제는 다음 테이블보기에서 데이터를 업데이트하는 방법을 찾을 수 없다는 것입니다.

+1

더 자세히 설명해 주실 수 있습니까? 귀하의 질문을 이해한다면'MasterViewController'의'viewWillAppear'에'[tableView reloadData]'를 사용할 것입니다 – viral

+0

_tableChoiceToDisplay와 Topic을 참조하는 헤더 파일과 구현 파일의 코드를 포함하도록 질문을 편집 할 수 있습니까? – ader

답변

0

UISegmentedControl이 변경되는 동안 MasterViewController에 선언 된 인스턴스 변수를 업데이트 할 수 있습니다. 그것을 바탕으로, 당신이 MasterViewController에 돌아올 때; 그것의 viewWillAppear[tableView reloadData]

질문 받고있는 경우에 말해주십시오.

는 편집 :

integer 이름을 segmentIndex을 가지고; 세그먼트가 변경되면 업데이트합니다. segmentIndex 부하의 값에 따라 필요한 dataSourceMasterViewController

편집 2의 UITableView에 표시 될 :

UISegmentedControl의 값이 변경, mvc.segmentIndex = (currentValueOfYourSegmentedControl)를 넣을 때, 그런 다음 MasterViewController의에서

switch (self.segmentIndex) 
{ 
    case 0: 
      // Set Datasource for First Choice. 
      break; 
    case 0: 
      // Set Datasource for Second Choice. 
      break; 
    case 0: 
      // Set Datasource for Third Choice.... and so on... 
      break; 
    default: 
      // Default Behavior 
      break; 
} 

viewWillAppear 당신은 내 포인트를 얻기 바랍니다.

+0

유망 해 보이는가, 매트, 그러나 무엇의 인스턴스 변수인가? [tableView reloadData]를 사용해 보았지만 작동하지 않았습니다. –

+0

@Steve 대답을 – viral

+0

수정했습니다. 이미 DVC에서이 코드를 사용했습니다 : MasterViewController * mvc = [[MasterViewController alloc] init]; self.delegate = mvc; –

0

나인 경우 대표 대신 알림을 사용합니다. 즉 detailViewController 내에서 valueChanged를 사용하여 segmentedControl 값 변경을 감지 한 다음 masterViewController에서받는 detailViewcontroller에서 NSNotification을 게시합니다.

가장 쉬운 방법은 : 그것은 당신이 필요가 없습니다 알림과 함께 선택한 값을 전달하는 것이 더 계속 될 것

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(segmentOneChosen) name:@"segmentOneChosen" object:nil]; 

:

[[NSNotificationCenter defaultCenter] postNotificationName:@"segmentOneChosen" object:nil userInfo:nil]; 

당신이 알림에 등록 masterViewController 되세요 각 세그먼트에 대한 별도의 통지

!! 테스트되지 않은 코드 :

NSArray *keys = [NSArray arrayWithObjects:@"segmentChosen", nil]; 
NSArray *objects = [NSArray arrayWithObjects:[NSNumber numberWithInt:self.topicsChoiceSegControl.selectedSegmentIndex], nil]; 
NSDictionary * dict = [NSDictionary dictionaryWithObjects:objects forKeys:keys]; 
[[NSNotificationCenter defaultCenter] postNotificationName:@"segmentChosen" object:nil userInfo:dict]; 

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(segmentChosen:) name:@"segmentChosen" object:nil]; 

-(void) segmentChosen:(NSNotification *)notification { 
    NSNumber *segmentChosenNum = [[notification userInfo] valueForKey:@"segmentChosen"]; 
} 

본인의 질문에 대한 답변 자체는 아니지만 해결하려는 문제에 대한 대체 솔루션을 제공합니다.

관련 문제