在SWReavealViewController中实现Home按钮

时间:2015-08-06 07:10:02

标签: ios xcode uiviewcontroller swrevealviewcontroller

我正在使用SWRevealViewController,其中一个单元格的内容称为“Home”。其余的内容转到另一个VieController,但Home按钮应该将App带到第一个ViewController。我试过了

[self.navigationController popToViewController:viewC animated:YES];

(viewC是第一个ViewController)我也试过

[self.navigationController popToRootViewControllerAnimated:YES];

既不起作用。有SWRevealViewController经验的人可以帮忙吗?  第一个视图控制器是RevealViewController和表视图的sw_front,其中单元格(“HOME”)存在于sw_rear中。 第一个ViewController是打开应用程序时出现的第一个页面

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
_rowSelected=(int)indexPath.row;
if (_rowSelected==0) {
    ViewController *viewC;
    [self performSegueWithIdentifier:@"toHome" sender:self];
    [self.navigationController popViewControllerAnimated:YES];
    [self.navigationController pushViewController:viewC animated:YES];
}
[self performSegueWithIdentifier:@"sideBarSegue" sender:self];
}

我在这里分别尝试了所有3种方法,没有一种方法可以使用

[self performSegueWithIdentifier:@"toHome" sender:self];
    [self.navigationController popViewControllerAnimated:YES];
    [self.navigationController pushViewController:viewC animated:YES];

这部分是一个“else”情况,重定向到另一个工作正常的ViewController

[self performSegueWithIdentifier:@"sideBarSegue" sender:self];

2 个答案:

答案 0 :(得分:1)

以下答案对您有所帮助。

      1.If you have given triggered segue connection in storyboard, remove triggered segue connection.
      2.Then give push segue connection to Home Button to your required view controller(I mean you want to back first view controller).
      3.Click Home Button Segue and give Identifier name as "goToYourViewController" or whatever you want just give there.Also segue should be "push".

答案 1 :(得分:1)

在后视图控制器中选择单元格后,您实施的可能不是正确的segue方法。相反,您应该再次在显示控制器中设置前视图控制器以实现此目的。这是我怎么做的(我没有使用过Segues):

menuItems是表格视图的数据源 previousItem只是一个字符串,用于检查用户最后选择的内容。如果最后一个选择与新选择相同,我只需重置位置。

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *item = [[menuItems objectAtIndex:indexPath.row] uppercaseString];
    UINavigationController *newController;
    if (![item isEqualToString:previousItem])
    {
        if ([item isEqualToString:@"HOME"])
            newController = [self.storyboard instantiateViewControllerWithIdentifier:@"HomeViewNavigationController"];

        ....... //conditions here for other cells.

        previousItem = item;

        [self.revealViewController setFrontViewController:newController];
        [self.revealViewController setFrontViewPosition:FrontViewPositionLeft animated:YES];
    }
    else
    {
        [self.revealViewController setFrontViewPosition:FrontViewPositionLeft animated:YES];
    }
}

这假设您在故事板中定义了主视图控制器标识符并嵌入在导航控制器中。或者您也可以通过执行alloc init来实例化它。

如果您有任何疑问,请与我们联系。

希望这会有所帮助。