我在UITableView中有3个单元格。 Person,Car和House我希望每个人都segue
使用自定义且不同的 STATIC TableViewController
,以便用户可以进行一些设置。
最有效的方法是什么?
在prepareForSegue
我查询并调用方法didSelectRowAtIndexPath
然后执行什么操作?
或者在故事板中,我是否设置了从一个单元到单独的TVC的推送segue 3次?
有谁知道任何好的教程?我不知道该怎么回事。
答案 0 :(得分:1)
我猜你在使用故事板?细胞是静态细胞,并且总是以相同的顺序?
如果是这样,我猜你在故事板中有一个UIViewController或UITableViewController,其中填充了Person,Car和House。
您有3个不同的视图控制器,您希望导航到哪个,具体取决于选择了人物,汽车或房屋中的哪一个?
当您使用原型单元时,我会执行以下操作:
如前所述,创建单元格时:
[cell setTag:indexPath.row];
然后在didSelectRowAtIndexPath中执行以下操作:
[tableView deselectRowAtIndexPath:indexPath animated:YES];
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
switch ([cell tag]) {
case 0:
PersonDetailViewController *personDetailViewController = [[self storyboard] instantiateViewControllerWithIdentifier:@"PersonDetails"];
[[self navigationController] pushViewController:personDetailViewController animated:YES];
break;
case 1:
// Do similar for Car
breal;
case 2:
// Do similar for House
default:
break;
}
答案 1 :(得分:0)
你可以这样做:
在didSelectRowAtIndexPath方法中,执行以下操作:
if(indexPath.row == 1)
{
// push to controller 1
}
else if(indexPath.row == 2)
{
// push to controller 2
}
else if(indexPath.row == 3)
{
// push to controller 3
}
答案 2 :(得分:0)
首先将您的主桌面视图与三个单独的TVC连接,并为该
的每个添加标识符添加segue然后在didSelectRowAtIndexpath中检查已按下哪个索引路径并调用该viewController,如下所示
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
if(indexPath.row == 1)
{
[self performSegueWithIdentifier:@"view1" sender:self];
}
else if(indexPath.row == 2)
{
[self performSegueWithIdentifier:@"view2" sender:self];
}
else if(indexPath.row == 3)
{
[self performSegueWithIdentifier:@"view3" sender:self];
}
}
然后在prepareforSegue中找到一个名为
的视图-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([[segue identifier] isEqualToString:@"view1"]){
TableView1 *tableMenu = segue.destinationViewController;
}
else if([[segue identifier] isEqualToString:@"view2"]){
TableView2 *tableMenu2 = segue.destinationViewController;
}
else if([[segue identifier] isEqualToString:@"view3"]){
TableView3 *tableMenu3 = segue.destinationViewController;
}
}
希望这有效,如果有人纠正我的错误