Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何从一组对象中生成IBOutlet?_Ios_Iphone_Interface Builder_Iboutlet_Iboutletcollection - Fatal编程技术网

Ios 如何从一组对象中生成IBOutlet?

Ios 如何从一组对象中生成IBOutlet?,ios,iphone,interface-builder,iboutlet,iboutletcollection,Ios,Iphone,Interface Builder,Iboutlet,Iboutletcollection,我想用Interface Builder中的一组UIImageView创建一个数组。而不是20或30 IBOutlet UIImageView *img1; 通过这种方式链接它们,然后将它们放入一个数组中,有没有一种方法可以声明一个IBMImageView数组 这样我的头文件中就没有那么多声明了。不幸的是,没有声明,但您可以将所有声明保留在一行: IBOutlet UIImageView *img1, *img2, *img3, *img4; 另一个选项(可能是最好的,因为您有这么多这样的选

我想用Interface Builder中的一组UIImageView创建一个数组。而不是20或30

IBOutlet UIImageView *img1;
通过这种方式链接它们,然后将它们放入一个数组中,有没有一种方法可以声明一个IBMImageView数组


这样我的头文件中就没有那么多声明了。

不幸的是,没有声明,但您可以将所有声明保留在一行:

IBOutlet UIImageView *img1, *img2, *img3, *img4;
另一个选项(可能是最好的,因为您有这么多这样的选项)是以编程方式创建它们并将它们存储在数组中,然后从视图控制器类将它们添加到视图中,使用

[self.view addSubview:img];
此外,请记住,如果元素是静态的(如背景元素),并且实际上不需要访问它们,则不需要为每个元素声明出口;您只需将它们添加到nib文件中,然后就可以忘记它们

ui按钮
实例也是如此。如果不需要更改按钮的任何内容,可以从按钮调用的方法访问它,如下所示:

-(IBAction) buttonPressed:(id)sender {
    UIButton *button = (UIButton *)sender;
    // method guts
    // stuff with button -- access tag, disable, etc
}

这是可能的,它被称为出口收集。这是定义门店集合的方法:

@property(retain) IBOutletCollection(UIImageView) NSArray *images;

现在,您可以将多个对象粘贴到Interface Builder中的插座中,加载界面时将为您创建阵列。

我在这里晚了一点,但在IB中设置每个ImageView的tag属性可能更容易,然后像
一样访问它们。[some_superview WithTag:tag]
而不是为每一个单独保留一个手柄。

Swift 3及以上版本:

@IBOutlet var stuckLabels: [UIImageView]

这里有更简单的方法

按照以下步骤创建插座阵列,并将其与IB元件连接:

  • 创建一个IBOutlets数组
  • 在序列图像板ViewController界面中添加多个UIElements(视图)
  • 选择ViewController(在故事板中)并打开连接检查器
  • 连接检查器中有“插座集合”选项(您将在那里看到插座阵列)
  • 连接接口元素
-


我会以编程方式创建它们,但它们都需要放在某些地方,我不想设置每个位置的位置。我需要在某些时候将它们从隐藏改为不隐藏,所以我需要能够访问它们。单行声明至少会让它看起来更整洁。是的,我们在iPhone上没有cocoa绑定,所以这是我们能做的最好的了。这回答了问题吗?我花了很长时间才弄明白如何在xcode 4中“将多个对象粘贴到插座中”。在代码中创建IBOutletCollection之后,我希望能够通过CTRL键从UIImageView拖动到它。出于某种原因,这不起作用。不过,有效的方法是选择“文件的所有者”,然后打开“连接检查器”,然后依次从“Outlet collections”部分拖动到每个UIImageView。我不知道如何实现这一点-谢谢@BenClayton!在xcode 5的开发者预览中,@BenClayton提到的问题似乎已经解决了-CTRL-Drag现在可以绑定到数组。回答得好!
class ViewController2: UIViewController {


    @IBOutlet var collection:[UIView]!


    override func viewDidLoad() {
        super.viewDidLoad()
    }
}