我的项目中有一个现有的ViewController xib,现在我想添加一个带静态单元格的UITableView,如下所示:
但是当我将UITableView拖到我的屏幕上时,我没有在Attributes Inspector中有“Content> Static”菜单 .
我已经尝试制作我的控制器子类UITableViewController,但这没有帮助 - 我仍然没有选择在Attributes Inspector中使用静态单元格 .
我查看了StackOverflow,但没有找到这个问题的任何现有答案 . 所有现有问题都与Storyboard(我没有使用)有关,而不是xib文件 .
我的猜测是,当你将一个UITableViewController添加到一个故事板时,Xcode会产生某种魔力,但是当你将现有的xib更改为从UITableViewController继承时,它不会 .
有关如何将静态单元格的表格视图添加到现有xib的任何建议吗?
3 回答
静态表格视图单元格仅在使用故事板时可用 . 但是,如果您没有为整个UI使用故事板,您仍然可以将它们用于单个屏幕而不是屏幕集合 .
为此,您可以创建一个UIStoryboard文件,其上有一个视图控制器,其文件所有者设置为您的自定义视图控制器子类 . 将VC的标识符设置为某个值 . 当您想要显示它时,获取故事板,然后通过从故事板创建VC来实例化视图控制器子类 .
您可以像往常一样在应用中展示此VC .
这是开始使用故事板而不必转换整个应用程序以使用它们的好方法 .
没有故事板,这是可行的:
你的控制器必须采用tableview委托和源代码的协议... UITableViewDelegate,UITableViewDataSource
为.xib添加表格视图;将表格视图的样式设置为"grouped"
将表格连接到控制器中的属性(让我们称之为"yourTableView")
将表格视图单元格添加到.xib作为单独的视图...即 . 不作为表视图的子视图......它们将自由浮动在.xib中 . (见下面的示例图片)
向表格单元格添加控件/标签等 .
为每个表格视图单元格的“属性”中的"Identifier"字段指定唯一字符串 .
将表格单元格连接到控制器中的其他属性(sliderCell,switchCell等)
将单元格控件的发送事件连接到控制器中的IBAction-ed方法 - (IBAction)handleSliderCell等 .
在控制器的viewDidLoad方法中,将表视图的委托和源分配给控制器(self.yourTableControl.delegate = self; self.yourTableControl.dataSource = self;)
在控制器中实现numberOfSectionsInTableView,numberOfRowsInSection和cellForRowAtIndexPath
在tableView:cellForRowAtIndexPath:中
,返回yourFirstCell,yourSecondCell等指针以获取适当的indexPath值
表格单元格控件的事件应该转到处理程序例程......
步骤4的示例:
为了扩展BVB的答案,当涉及到10号时,这里是用于tableview委托方法的Swift 3片段 . 务必为xib中的所有单元添加插座 .
手动创建表视图节时,请记住
indexPath
等于表示表结构的二维数组 . 例如,当indexPath
传递给tableView(cellForRowAt indexPath: IndexPath)
等于[1][0]
时,您的单元格将被放置在第二部分的第一个位置 .可以使用
indexPath.row
和indexPath.section
属性从indexPath
中拉出值 . 使用这些值,您可以按照您喜欢的顺序从IBOutlets手动构建节 .