[ios]通过以编程方式生成按钮界限值传递

发布时间: 2017/3/21 23:36:14
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有 ViewController 和按钮以编程方式生成那里一套。每个按钮必须执行与标识符的界限,界限,如按钮的数量通过传递信息。
如何将某种独特的 id 添加到每个按钮 (这可以由 CoreData 提供),并通过此值通过界限吗?这里是我的代码创建一个按钮,它正处于 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];

什么代码添加,例如按钮设置一些埃法尔?

解决方法 1:

不设置 performSegue,使用你自己的函数来代替你按钮的操作

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

实施我的按钮然后能的界限。 如何知道按哪个按钮? 你可以存储为每个按钮的引用,然后比较它们的按钮对象的获取传入该方法,或者你可以使用 tag 属性︰

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 doc 这说 sender 参数有:"您想要使用启动界限的对象。此对象可用于提供信息之目的在实际界限。" 换句话说 sender 参数是如何将信息 (例如像字符串、 数组、 字典、 自定义对象的对象) 传递给 prepareForSegue 方法。 所以如果按钮需要发送一个字符串,也许它是标题,向目的地 viewController sender 参数是如何传递它。

官方微信
官方QQ群
31647020