我可以使用不同标签将多个对象连接到同一个IBOutlet吗?
在Interface Builder中的一个视图中有30个button。 每个人都有一个不同的100001和100030之间的标签。我发现很容易使用每个button相同的动作,传递每个button时的标签,并使用代码来决定加载哪个级别。
我想将所有button连接到一个IBOutlet,但是每个button都会根据用户保存的数据和button的标签加载不同的图像。
我该怎么做呢?
使用IBOutletCollection将视图控制器添加到视图控制器,如下所示:
@property (retain, nonatomic) IBOutletCollection(UIButton) NSMutableSet* buttons;
这将让你连接所有的button到一个sockets。 属性buttons
将是一个包含所有button的NSMutableSet。 您可以继续使用button的tag
属性来识别各个button。 如果要遍历所有button,可能要设置每个button的图像,这是很方便的:
for (UIButton *b in self.buttons) { b.imageView.image = [self imageForTag:b.tag]; }
(您需要提供-imageForTag:
方法来为给定标签提供正确的图像,或者find其他方式将标签映射到图像。)
当然,如果您已经知道所有button的标签值的范围,并且您已经注意到在包含所有button的视图中使标签独一无二,您也可以使用-viewWithTag:
单独获取每个button。 这可能不像已经创build的整套button那么快,就像上面介绍的outlet集合一样,但是这意味着还有一件事要维护。
按照以下步骤创build一个连接IB元素的socketsarrays:
- 创build一个IBOutlets数组
- 在Storyboard ViewController界面中添加多个UIElements(Views)
- selectViewController(在故事板)并打开连接检查器
- 在连接检查员有选项“出口收集”(你会看到一系列的网点)
- 连接,如果你的界面元素
–
class ViewController2: UIViewController { @IBOutlet var collection:[UIView]! override func viewDidLoad() { super.viewDidLoad() } }
- 我所有的IBOutlet都是在viewDidLoad中
- 为什么Xcode为IBOutlet创build一个弱引用?
- UIAlertView添加到应用程序时崩溃
- iOS loadNibName混淆,什么是最佳做法?
- Objective-C iOS开发在设置variables时使用viewDidLoad或initWithCoder,为什么?
- 无法在UIViewController中为UIBarButtonItem创buildIBOutlet
- IBOutlets应该是Ivars还是属性?
- 如何访问静态TableViewcell中的文本框而不创build引用出口?
- awakeFromNib,网点和故事板:是文件错误?