2016-08-14 37 views
1

在我的主视图中,我有两个容器在视图控制器中有一个IBOutlet。原始视图控制器中的containerview元素的IBOutlet

在两个容器中,我都有一个图像和一个标签,如下图所示。

enter image description here

我想有一个IBOutlet改变图像和标签,但是当我把它拖到原来的视图控制器它不允许它。

所以在viewcontroller.swift中,正如我所说我可以通过单击和拖动来访问每个容器。像这样

@IBOutlet weak var containerview1: UIView! 
@IBOutlet weak var containerview2: UIView! 

但我试图访问图像视图和标签在容器中,这样的事情:

@IBOutlet weak var containerview1: UIView! 
@IBOutlet weak var containerview2: UIView! 

@IBOutlet weak containerview1_ImageView: UIImageView! 
@IBOutlet weak containerview2_ImageView!: UIImageView! 

我明白,这可能是不这样做的正确方法。我需要能够通过viewcontroller.swift以编程方式更改两个容器视图中的图像和标签。

感谢您的帮助

+0

你想在一个的viewController你的两个集装箱的意见(图像,标签)?给定的图像显示其他两个视图控制器与segue。 – Sofeda

+0

我不是起诉我理解你的问题。那是我真实的故事板。我需要viewcontroller.swift能够更新其他容器视图中的图片和标签。 –

+0

我在这里看到三个viewControllers。 – Sofeda

回答

1

创建容器

import UIKit 

class ContainerView1: UIView { 

@IBOutlet var containerView1Label: UILabel! 
@IBOutlet var containerView1ImageView: UIImageView! 

} 


import UIKit 

class ContainerView2: UIView { 

@IBOutlet var containerView2Label: UILabel! 
@IBOutlet var containerView2ImageView: UIImageView! 

} 

在主要的viewController故事板两个不同的类中定义这些类

enter image description here

现在通过拖动设置标签和ImageView的出口from storyboard

enter image description here

现在拖动主视图控制器容器出口和使用

import UIKit 

class ViewController: UIViewController { 

    @IBOutlet var containerView1: ContainerView1! 
    @IBOutlet var containerView2: ContainerView2! 

    override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 


    // use like this both container elements 

    containerView1.containerView1Label.text = "Container view 1 lable" 
    //containerView1.containerView1ImageView.image = yourImage file 
    } 

    override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
    } 

}

+0

非常感谢你@SMi!我完全错误地做,这比我想象的要容易得多。再次感谢 –

+0

我在这一行收到错误“意外地发现零,而解包可选值”:containerView1.containerView1Label.text =“容器视图1标签”。我不明白的解释的唯一部分是当你写道:“在主视图控制器storyboard定义这些类”。我认为这可能是问题所在。 –

+0

“在主视图控制器故事板定义这些类”这个我的意思是,当你拖动容器的出口到ViewController类时,那些UIView通过故事板识别ContainView1类。我为此创建了一个演示项目。在我的身边,它正在毫无错误地工作。如果你给你的邮件地址,我可以邮寄。 – Sofeda

相关问题