奥特莱斯不能连接到重复的内容iOS
我刚刚创build了一个应用程序,并开始将@ IBOutlet连接到故事板。 我将它们中的一些连接到具有基本样式的UITableViewCell原型单元中的标签。 当我连接它,虽然我得到故事板中的这个错误:
从TableViewController到UILabel的detailText Outlet无效。 sockets不能连接到重复的内容。
有人可以帮我吗? 我已经成功地完成了这个任务,但是这一次却把这个错误当成了我的错。
创build一个表视图单元格子类并将其设置为原型的类。 将这些sockets添加到该类并连接它们。 现在,当您configuration单元格时,您可以访问sockets。
如果您正在使用表格视图来显示“设置”和其他选项(如内置的“设置”应用程序),则可以将“ 表格视图内容”设置为“属性”检查器下的 静态单元格 。 此外,要做到这一点,你必须embedded你的表视图在UITableViewController实例。
有两种types的表格视图单元格,通过故事板提供给你,它们是dynamic原型和静态单元格
1.dynamic原型
从名字来看,这种types的单元格是dynamic生成的。 他们是通过你的代码控制的,而不是故事板。 在表视图的委托和数据源的帮助下,您可以编程方式指定单元格的数量,单元格的高度,单元格的原型。
当你把一个单元格拖到你的表格视图中时,你正在声明一个单元格的原型。 然后,您可以基于此原型创build任意数量的单元格,然后通过编程方式将其添加到表格视图(通过cellForRow
方法)。 这样做的好处是你只需要定义1个原型,而不是创build每个单元格,并自己添加所有视图(请参阅静态单元格)。
因此,在这种情况下,您无法将单元格原型上的UI元素连接到视图控制器。 您将只有一个视图控制器对象启动,但您可能有许多单元对象启动并添加到您的表视图。 将单元格原型连接到视图控制器是没有意义的,因为您无法通过一个视图控制器连接控制多个单元格。 如果你这样做,你会得到一个错误。
要解决这个问题,你需要连接你的原型标签到一个UITableViewCell
对象。 UITableViewCell
也是单元格的原型,您可以根据需要启动尽可能多的单元格对象,然后将每个单元格连接到从故事板表格单元格原型生成的视图。
最后,在你的cellForRow
方法中,从UITableViewCell
类创build自定义单元格,并使用标签做有趣的事情
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "yourCellIdentifier") as! YourCell cell.label = "it works!" return cell }
2.静态细胞
另一方面,静态单元确实通过故事板进行configuration。 您必须将UI元素拖放到每个单元格以创build它们。 你将控制细胞的数量,高度等故事板。 在这种情况下,您将看到与您从故事板中创build的视图完全相同的表格视图。 静态单元格更常用于设置页面,单元格不会有太大变化。
要控制一个静态单元格的UI元素,你确实需要将它们直接连接到你的视图控制器,并设置它们
有了我,我有一个UIViewcontroller
,进入它,我有一个自定义单元格上的tableview。 我将UILabel的出口映射到UItableviewcell
到UIViewController
然后得到错误。
或者,您不必使用IBOutlet来查看视图中的对象。 您可以在tableViewCell中为标签赋予一个Tag值,例如将Tag设置为123 (这可以通过属性检查器来完成)。 然后你可以通过访问标签
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "someID", for: indexPath) let label = cell.viewWithTag(123) as! UILabel //refer the label by Tag switch indexPath.row { case 0: label.text = "Hello World!" default: label.text = "Default" } return cell }
- xCode 6 beta 7:故事板在右侧和左侧增加了额外的空间
- 我如何从我的appDelegate访问我的viewController? iOS版
- Storyboard – 参考AppDelegate中的ViewController
- 故事板和SVN冲突
- 如何初始化iOS 5故事板中的自定义原型样式表单元格?
- 为UITableView使用didSelectRowAtIndexPath或prepareForSegue方法?
- 我怎样才能重新排列使用故事板的UITabBarController项目?
- IOS的StoryBoard多个Segue的TableCell
- 有条件的segue在UITableViewCell上点击执行