gpt4 book ai didi

iOS objective-C : How to call Push Segue from another Class

转载 作者:行者123 更新时间:2023-11-29 12:35:28 25 4
gpt4 key购买 nike

场景

我有一个应用程序可以在 UITableViewController 中向用户显示帖子 - 在某些包含评论的帖子中,该单元格内将有另一个 UITableView 来显示评论。每个评论都将包含一个位于 UIButton 下方的个人资料图片。按下此 UIButton 时,我希望 UITableViewController 类转至另一个 UIViewController,该 UIViewController 将显示有关发布该帖子的用户的信息。

所以,回顾一下

UITableViewController 将执行 Push Segue

UITableViewControllerUITableViewCells

UITableViewCells (包含注释) 将有一个子 UITableView

UITableView 将包含单元格本身,每个单元格都有一个 UIButton

UIButton 被按下时,UITableViewController 将执行 Push Segue

我尝试过的

- (void)ProfilePictureWasPushed:(UIButton *)sender {

NSDictionary *object = [self.comments objectAtIndex:sender.tag];

DashboardViewController *dashboard = [[DashboardViewController alloc]init];
dashboard.selectedID = object[@"posterID"];
[dashboard performSegueWithIdentifier:@"profile" sender:dashboard];

}

我收到这个错误...

...reason: 'Receiver (<DashboardViewController: 0x7d867600>) has no segue with identifier 'profile''

我已经检查过,实际上有一个名为“profile”的推送转场。

问题

有谁知道如何正确执行此壮举?

最佳答案

启动和接收转场的 UIViewController 必须根据此处的文档使用 Storyboard加载 https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewController_Class/index.html#//apple_ref/occ/instm/UIViewController/performSegueWithIdentifier:sender :

接收此消息的 View Controller 必须是从 Storyboard 中加载的。如果 View Controller 没有关联的 Storyboard,可能是因为您自己分配并初始化了它,此方法会抛出异常。

如果您想从 ViewControllerA 转到 ViewControllerB,则需要在 ViewControllerA 的实例上调用该方法。此外,您不应该创建 ViewControllerB。所以你的代码应该是

- (void)ProfilePictureWasPushed:(UIButton *)sender {
[self performSegueWithIdentifier:@"profile" sender:sender]; //self could also be used for sender
}

由于您还想通过 segue 将数据传递到目标 View Controller ,为此,请覆盖源 View Controller (即您的 UITableViewController)中的 -prepareForSegue:sender,检索 destinationViewController 并设置 selectedID。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"profile"]]) {
NSDictionary *object = [self.comments objectAtIndex:sender.tag];
DashboardViewController *dashboard = (DashboardViewController *)segue.destinationViewController;
dashboard.selectedID = object[@"posterID"];
}
}

关于iOS objective-C : How to call Push Segue from another Class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26480900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com