ios - 将以编程方式调用的 segue 的发件人传递到目的地

标签 ios objective-c storyboard segue

抱歉,如果标题不是很清楚,但希望我能在这里详细说明。

我有一个 ViewController MatchLineupViewController,它显示 22 个按钮来代表球队中的橄榄球运动员。当用户点击这些按钮中的任何一个时,将在以下方法中以编程方式调用模态转场:

- (IBAction) showSquadSelector:(UIButton *)sender {
    [self performSegueWithIdentifier:@"SeguePopupSquad" sender:sender];
}

随后显示的模态 ViewController 称为 SquadSelectViewController。它将选定的播放器对象传递回作为委托(delegate)的 MatchLineupViewController。这非常有效。

但是,我想将返回对象的 profile_picture 属性分配给首先发送 segue 的 UIButton

EDIT - 返回的对象是一个 NSDictionary,如下面的代码所示:

- (void) selectPlayer:(NSDictionary *)player forButton:(UIButton *)sender {
    [sender.imageView setImage:[UIImage imageWithContentsOfFile:[player objectForKey:@"profile_picture"]]];
}

我该怎么做呢?如果您需要任何进一步的代码来理解我的要求,我可以提供。

非常感谢, 克里斯

编辑 -

- (IBAction) showSquadSelector:(UIButton *)sender {
    [self performSegueWithIdentifier:@"SeguePopupSquad" sender:sender];
}

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"SeguePopupSquad"]) {
        SquadSelectViewController *ssvc = (SquadSelectViewController *) segue.destinationViewController;
        ssvc.myDelegate = self;
        ssvc.senderButton = sender;
    }
}

- (void) selectPlayer:(NSDictionary *)player forButton:(UIButton *)sender {
    [sender.imageView setImage:[UIImage imageWithContentsOfFile:[player objectForKey:@"profile_picture"]]];
    NSLog(@"%@", [player description]);
    NSLog(@"%@", [sender description]);
}

最佳答案

您可以将 showSquadSelector: 方法的 sender 转发到 segue,如下所示:

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

segue 的 sender 将是触发 segue 的按钮,因此从 segue 触发的代码会知道是什么按钮触发了它:您的 prepareForSegue: 会具有正确的 UIButton。您现在可以将它添加到预定键(例如,@"senderButton")返回的字典中,并在从 segue 返回时检查它。

关于ios - 将以编程方式调用的 segue 的发件人传递到目的地,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15559008/

相关文章:

android - 我可以创建(如何)指向移动应用程序的单个 html 链接,根据设备将用户发送到 itunes 或 gplay 吗?

ios - AppDelegate.m 需要将数据发送到单独的 ViewController 的 WebView

iphone - 使用 segue 将数据传输到另一个 Controller 。从代码

ios - Xcode8 Controller 是灰色的,它们是在 Xcode 7 中设计的,具有尺寸等级

iphone - 在委托(delegate)范式中释放

ios - Swift 表格 View 单元格比例高度

iphone - 在 obj-c 中将 NSData 加密为 NSString?

ios - 安装 Xcode 5 后无法再拖放到 Storyboard 上

objective-c - 无法调用 xcode 中 "+(void)"函数中的函数

ios - 调用reloadData后,UITableView性能问题