1

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

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

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

然后显示的模态 ViewController 称为SquadSelectViewController. 它将选定的播放器对象传回给MatchLineupViewController充当委托的 。这完美地工作。

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

编辑 -返回的对象是一个 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]);
}
4

1 回答 1

1

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

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

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

于 2013-03-21T22:07:41.387 回答