在不同的tableview中浏览页面

时间:2016-07-14 12:43:35

标签: ios objective-c uitableview

我创建了一个包含两个表视图的屏幕,我已经成功调用了方法cellForRowAtIndexPath,但现在使用didSelectRowAtIndexPath从tableview选项导航到另一个页面时遇到了麻烦。我想我在做一些错误,我明显不知道下一步是什么。任何人都可以指导我该怎么做?我用过这段代码 -

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    if ([tableView isEqual:leftTableView]) {

            TattooSinglesScreen *obj=[self.storyboard instantiateViewControllerWithIdentifier:@"TattooSinglesScreen"];

            EyecatcherScreen *obj1=[self.storyboard instantiateViewControllerWithIdentifier:@"EyecatcherScreen"];

            TattooToplist *obj2=[self.storyboard instantiateViewControllerWithIdentifier:@"TattooToplist"];

            int i=indexPath.row;
            if(i==0){
                [self.navigationController pushViewController:obj animated:nil];
            }
            else if (i==1) {
                [self.navigationController pushViewController:obj1 animated:NO];
            }
            else if (i==2) {
                [self.navigationController pushViewController:obj2 animated:NO];
            }
    }
    else {
        TattooSinglesScreen *obj=[self.storyboard instantiateViewControllerWithIdentifier:@"TattooSinglesScreen"];

        EyecatcherScreen *obj1=[self.storyboard instantiateViewControllerWithIdentifier:@"EyecatcherScreen"];

        TattooToplist *obj2=[self.storyboard instantiateViewControllerWithIdentifier:@"TattooToplist"];

        int i=indexPath.row;
        if(i==0){
            [self.navigationController pushViewController:obj animated:nil];
        }
        else if (i==1) {
            [self.navigationController pushViewController:obj1 animated:NO];
        }
        else if (i==2) {
            [self.navigationController pushViewController:obj2 animated:NO];
        }
   }
}

2 个答案:

答案 0 :(得分:0)

如果你想从表格视图导航到另一个视图控制器,请不要设置动画:NO.set animated:YES for navigating.But如果你设置动画:NO,肯定它不会导航。所以你必须做以下事情进行导航。

YourViewController *yourVC = (YourViewController *)[self.storyboard instantiateViewControllerWithIdentifier:@"StoryBordIdentifier"];
[self.navigationController pushViewController:yourVC animated:YES];

您也可以在此didSelectRowAtIndexPath

中使用
[self performSegueWithIdentifier:@"segueID" sender:self];

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
  YourViewController *vc = segue.destinationViewController;
}

Click Table Row and Go another Page

Segue or didSelectRowAtIndexPath

Making Push Segue when table row is selected

答案 1 :(得分:0)

我看到user3182143的回答有所帮助,但是为了它的价值,我设置了一个小demo project(现在更新了两个表),以显示任何感兴趣的人如何完成。

它还说明(顾名思义),您可以手动推动并将动画参数设置为NO,只需在模拟器中运行即可。

我不知道为什么这在原来的方法中没有用,pri,但我的猜测是你以某种方式错误地设置了导航视图控制器。

代码&故事板可读性我建议使用segues。