2012-02-13 4 views
3

storyboards를 사용하고 있으며 UITableView 용 UISearchbar를 구현하고 싶습니다. UISearchbarController는 새로운 jQuery과를 생성하고, 나는 다음과 같은 전략을 사용UIStoryboard가있는 UISearchbar : segues 및 사용자 정의 셀이 올바르게 작동하지 않습니다.

if (tableView == self.tableView) 
    //Populate table view with normal data 
else 
    //Populate table view with search data 

첫 번째 문제는 사용자 정의 세포를 처리하는 것입니다. 나는 그들을 cellForRowAtIndexPath에서 인스턴스화해야합니다. 일반적으로 nib 파일에서 그렇게합니다. 스토리 보드로 어떻게이 작업을 수행합니까? dequeueReusableCellWithIdentifier는 nil을 리턴합니다.

두 번째 문제점은 테이블보기에서 상세보기까지의 segue와 관련됩니다. segue는 일반 테이블 뷰에서는 시작되지만 검색 테이블 뷰에서는 시작되지 않습니다. Storyboards가 모든 것을 숨기므로 검색 테이블보기의 셀에 연속보기를 할당하는 방법을 모릅니다.

아무도 도와 줄 수 있습니까? 감사!

1) 내가 initWithStyle에서 사용자 정의 세포를 초기화 : reuseIdentifier이 :, 다음 layoutSubviews에서 레이아웃을 구현 그래서 여기

답변

0

은 내가 한 것입니다. 그래서 스토리 보드에서 셀을로드하는 방법을 아직 모릅니다.

2) 스토리 보드를 사용하는 대신 탐색 스택에서보기를 밀었습니다.

1

두 번째 문제 : 셀에서 segue를 연결하지 않고 viewcontroller에서 연결하십시오. 스토리 보드에 다른 이름으로 두 개의 단을 만들어야합니다. 수동으로 행이 선택 SEGUE 호출 : 다음 안에 테이블 뷰를 추가 테이블보기 위해 함께 IBOutlet 추가의 UIViewController에있는 UITableViewController에서의 ViewController 종류를 변경하여 해결 첫 번째 문제에 대해서는

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if ([tableView isEqual:self.searchDisplayController.searchResultsTableView]) { 
     [self performSegueWithIdentifier:@"fromSearchResults" sender:self]; 
    } 
    else { 
     [self performSegueWithIdentifier:@"fromAll" sender:self]; 
    } 
} 

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([[segue identifier] isEqualToString:@"fromSearchResults"]) { 
     .......... 
     .......... 
    } 
    else { 
     .......... 
     .......... 
    } 
} 
6

@property (strong, nonatomic) IBOutlet UITableView *_tableView; 

사용 출구

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    MyTableViewCell *cell=[_tableView dequeueReusableCellWithIdentifier:productMasterCellIdentifier]; 
    // .. modify your cell 
    return cell; 
} 
+0

함께 IBOutlet이 문제를 해결 테이블 셀에게 디큐! – lnguyen55

+0

이것은 잘 작동하는 것 같습니다. 나는'UITableViewController'를 유지하고 그냥 사용했다 :'self.tableView dequeueReusableCellWithIdentifier : ...'. – penfold

+0

@penfold가 제안한대로 [self.tableView dequeueReusableCellWithIdentifier ...]를 사용하면 검색 및 메인 테이블 뷰가 모두 동일한 대상 뷰 컨트롤러를 가리키는 경우 잘 작동합니다. 그러나 대상보기 컨트롤러가 다른 경우 (일반적인 경우가 아니더라도) 검색 막대에 대해 Segue가 제대로 작동하지 않으므로 그렇게 할 수 없습니다. 나는 내 몸으로 그것을 시험했다 ... – viggio24

관련 문제