重定向到特定的视图控制器

时间:2014-02-01 13:01:09

标签: ios iphone objective-c navigation segue

在我的编程“容量”中遇到问题和“未命中”。 我有一个tableview控制器,其中一些数据是从json解析的。 当您选择“新闻”时,您将进入包含所有数据的详细信息视图。

一切都还可以,但我添加了“检查”如果您已登录或未登录。 如果没有,您将被“重定向”到登录屏幕。

我尝试用segue(模态)来做。它正在发挥作用,但是当我这样做时,我的“导航”就会被打破,就好像他“迷失”了他的道路一样。

Storyboard

我尝试以编程方式执行此操作:

LoginViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"LoginViewController"];
[self.navigationController pushViewController:controller animated:YES];

但是当我这样做的时候,什么也没发生,我的“详细视图控制器”加载没有重定向

并获得该日志:

  

嵌套推送动画可能导致导航栏完成损坏   在意外状态下进行导航转换。导航栏   子视图树可能已损坏。

有人对我有暗示吗? 感谢

3 个答案:

答案 0 :(得分:1)

你做错了。你需要学习基本的seque编程(故事板)。 follow this link

LoginViewController *controller = [self.storyboard   instantiateViewControllerWithIdentifier:@"LoginViewController"];
[self.navigationController pushViewController:controller animated:YES];

在故事板中,你已经拥有了推送信号,&再次你推动loginviewcontroller。这就是为什么你得到“嵌套推动画”警告。

答案 1 :(得分:0)

这不是正常的做法。您通常会以模态方式显示该登录视图控制器。

如果这是您想要的方式,您可以使用以下步骤来完成:

1)将DetailViewController连接到TableViewController(不是来自单元格本身,而是来自黄色图标,代表底部黑条的ViewController)。如果您愿意,请选择推送并将标识符添加到该Segue(例如,“DetailSegue”)

2)将LoginViewController连接到TableViewController,就像连接DetailViewController并将标识符添加到该segue一样(例如,“LoginSegue”)。

现在,当用户点击某个单元格时,您希望检查会话是否仍处于活动状态,如果是,您将执行[self performSegueWithIdentifier:@"DetailSegue" sender:self];,如果不是,则执行[self performSegueWithIdentifier:@"LoginSegue" sender:self]; < / p>

希望这会有所帮助,欢呼。

答案 2 :(得分:0)

要理解你想做什么很难,问题不太明确。

如果您想链接到故事板中的场景,请通过ctrl + click&amp; amp;创建一个segue。从初始场景拖动,然后给segue一个ID(通过单击segue并使用检查器设置ID来执行此操作)

然后在你的tableview控制器中,你在哪里拿起你的标签(假设这是在tableview委托方法中),你可以以编程方式调用segue

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[self performSegueWithIdentifier:@"YOURSEGUEID" sender:self];
}