我有一个有3行的UITableView。按下时第一行调用电话号码,这样可以正常工作。
在UITableView中选择相应的行时,我想要显示另外两个UIViewControllers。
下面是我的didSelectRow方法。
-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
//deselect row
[tableView deselectRowAtIndexPath:indexPath animated:YES];
switch (indexPath.row)
{
case 0:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel:1800333000"]];
break;
case 1:
break;
case 2:
break;
default:
break;
}
}
可以看出,我已经设置了我的开关表达式。我想弄清楚如何调用另外两个UIViews。
有人可以提供显示这些视图所需的代码吗?
答案 0 :(得分:0)
你的问题并不清楚你究竟在做什么,但我认为你需要的是从UITableViewCell中创建一个segue,特别是一个segue。
首先要做的是按住Control键并单击并将连接从UITableView单元格拖到故事板中的另一个视图。这应该在表格视图单元格和下一个视图之间用一个小圆圈创建一条线。单击该圆圈可在属性检查器中设置和编辑segue属性。然后在UITableViewController类中,您需要准备segue方法。下面是我编写的一些示例代码,它在那里有一个额外的if语句,因为我实际上有两个UITableViews - 一个来自UITableViewController,另一个来自searchbarviewcontroller(位于UITableViewController中)。
// In a story board-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
if ([sender isKindOfClass:[UITableViewCell class]]) {
NSIndexPath * SBidxPath = [self.searchDisplayController.searchResultsTableView indexPathForCell:sender];
NSIndexPath * TBidxPath = [self.tableView indexPathForCell:sender];
NSIndexPath * idxPath = [[NSIndexPath alloc] init];
if (!SBidxPath) {
idxPath = TBidxPath;
}
else{
idxPath = SBidxPath;
}
if ([segue.identifier isEqualToString:CELL_PUSH_SEGUE_ID]) {
if ([segue.destinationViewController isKindOfClass:[YTViewController class]]) {
[self prepareYTViewController:segue.destinationViewController withDictionaryEntry:[self.dictionaryEntries objectAtIndex:idxPath.row]];
}
}
}
}
另一件事是您还需要查看NSIndexPath是什么。通常,您在该结构中使用的属性是.row属性。