我有一个用下面的数据编程的表格视图。它还具有在页面上编程的工作搜索功能。我试图使用'switch'系统转移到特定的视图控制器,具体取决于按下的单元格。
- (void)viewDidLoad
{
[super viewDidLoad];
smtArray = [[NSArray alloc] initWithObjects:
[Smt SSSOfCategory:@"P" name:@"HW"],
[Smt SSSOfCategory:@"P" name:@"WI"],
[Smt SSSOfCategory:@"P" name:@"WC"],
[Smt SSSOfCategory:@"P" name:@"C"],nil];
//搜索功能的代码
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
Smt *smt = nil;
if (tableView == self.searchDisplayController.searchResultsTableView) {
smt = [filteredSmtsArry objectAtIndex:indexPath.row];
switch (indexPath.row) {
case 0:
[self performSegueWithIdentifier:@"One" sender:self];
break;
case 1:
[self performSegueWithIdentifier:@"Two" sender:self];
break;
default:
break;
}
}
}
目前,我对如何基于tableview单元格中的对象执行segue感到困惑。显然目前segue依赖于indexPath.row,这对于可搜索的表是无用的。 (我知道segue目前只在数据被过滤时才有效)。
任何建议都将不胜感激!
干杯
答案 0 :(得分:1)
您可以使用
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (tableView == self.searchDisplayController.searchResultsTableView) {
UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];
NSString *content = selectedCell.textLabel.text;
if ([content isEqualToString:"One"]) [self performSegueWithIdentifier:@"One" sender:self];
else if ([content isEqualToString:"Two"]) [self performSegueWithIdentifier:@"Two" sender:self];
}
}
在你的方法中。然后你就可以得到你想要的任何东西。
答案 1 :(得分:0)
我想知道为什么你使用“One”,“Two”......作为标识符,为什么不使用你的smtArrays对象名作为标识符?如果您担心标识符是deplacate,则可以使用SSSOfCategory + name。而且您的代码将更完美,更具可读性
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
Smt *smt = nil;
if (tableView == self.searchDisplayController.searchResultsTableView) {
smt = [filteredSmtsArry objectAtIndex:indexPath.row];
[self performSegueWithIdentifier:smt.name sender:self];
}
}