UITableViewCell基于选择的行分段到不同的静态UITableViewController?

时间:2014-02-13 13:04:41

标签: ios storyboard row uitableview uistoryboardsegue

我在UITableView中有3个单元格。 Person,Car和House我希望每个人都segue使用自定义且不同的 STATIC TableViewController,以便用户可以进行一些设置。

最有效的方法是什么?

prepareForSegue我查询并调用方法didSelectRowAtIndexPath然后执行什么操作? 或者在故事板中,我是否设置了从一个单元到单独的TVC的推送segue 3次?

有谁知道任何好的教程?我不知道该怎么回事。

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;

       }
}

希望这有效,如果有人纠正我的错误