gpt4 book ai didi

ios - 通过 segue 为以编程方式生成的按钮传递值

转载 作者:行者123 更新时间:2023-11-29 12:41:56 27 4
gpt4 key购买 nike

我有一个 ViewController 和一组在那里以编程方式生成的按钮。每个按钮都必须使用标识符执行 segue 并通过 segue 传递信息,例如按钮的编号。
如何为每个按钮添加某种唯一的 id(可以由 CoreData 提供)并通过 segue 传递这个值?这是我创建按钮的代码,它被放置在 for 循环中。

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self
action:@selector(performSegueWithIdentifier:sender:)

forControlEvents:UIControlEventTouchUpInside];
[button setTitle:@"Show View" forState:UIControlStateNormal];
button.frame = CGRectMake(80.0, 210.0, 160.0, 40.0);
[self.containerView addSubview:button];

要添加到按钮的代码,例如设置一些 iVar?

最佳答案

不要将按钮的操作设置为 performSegue,而是使用您自己的函数

[button addTarget:self action:@selector(myButtonPressed:)];

然后我的按钮的实现可以进行转场。如何知道按下了哪个按钮?您可以存储对每个按钮的引用,然后将它们与传递到方法中的按钮对象进行比较,或者您可以使用标记属性:

button.tag = 1;

您的按钮功能可能看起来像这样。 sender 参数用于附加您希望 prepareForSegue 函数接收的任何类型的数据

- (void)myButonPressed:(UIButton *)button {
if (button.tag == 1) {
[self performSegueWithIdentifier:@"button1Segue" sender:@"any data you want to send"];
}
}

然后你的 prepareForSegue 看起来像

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"button1Segue"]) {
UIViewController *dest = segue.destinationViewController;
dest.specialString = sender;
}
}

更新:

UIViewController 文档对 sender 参数有这样的说法:“您想要用来启动转场的对象。该对象在实际转场期间可用于提供信息。”换句话说,sender 参数是您将信息(例如字符串、数组、字典、自定义对象等对象)传递给 prepareForSegue 方法的方式。因此,如果 buttonA 需要发送一个字符串(可能是标题)到目标 viewController,sender 参数就是您传递它的方式。

关于ios - 通过 segue 为以编程方式生成的按钮传递值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24664788/

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