2012-02-13 43 views
3

我正在使用故事板并希望为我的UITableView实现UISearchbar。该UISearchbarController生成一个新的UITableView和我使用了以下策略:用UIStoryboard UISearchbar:赛格和自定义单元格不能正常工作

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

的第一个问题是应对定制单元。我必须在cellForRowAtIndexPath中实例化它们。通常你会从nib文件中做到这一点。我如何从故事板做到这一点? dequeueReusableCellWithIdentifier返回nil。

第二个问题涉及从表格视图到细节视图的延续。 segue在普通表视图中启动,但不在搜索表视图中启动。由于Storyboards隐藏了一切,我不知道如何将搜索引擎分配给搜索表视图的单元格。

请问谁能帮忙?谢谢!

回答

0

因此,这里是我做过什么:

1)初始化我自定义细胞initWithStyle:reuseIdentifier :,然后在layoutSubviews实现布局。所以我仍然不知道如何从故事板加载单元格。

2)我推动导航堆栈的视图,而不是使用故事板segues。

1

关于第二个问题:请不要链接segue从单元格,而是从viewcontroller链接。您需要在故事板中制作两个不同名称的赛段。然后手动调用当行被选择的SEGUE:关于第一个问题,我通过从的UITableViewController改变的ViewController类型的UIViewController,然后加入在其内部表视图,并添加IBOutlet中为表视图解决它

- (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; 

使用出口出列的表格单元格

+0

IBOutlet中解决了这个问题! – lnguyen55 2013-02-03 23:31:57

+0

这似乎工作得很好;我保留了'UITableViewController',并使用了:'self.tableView dequeueReusableCellWithIdentifier:...'。 – penfold 2013-03-13 01:24:07

+0

如果@penfold建议使用[self.tableView dequeueReusableCellWithIdentifier ...],如果搜索和主表视图都指向相同的目标视图控制器,则效果很好。但是,如果目标视图控制器不同(即使这不是常见的情况),那么您无法这样做,因为搜索栏的搜索栏无法正常工作。我用我的身体测试了它... – viggio24 2014-02-10 15:51:47