我有一个动态表视图。表视图单元格原型如下所示:
"------------------"
标签
段控(yes|no)
text View
"------------------"
我的问题是我如何隐藏并显示text View,tableView可以自动调整其单元格高度
这是我的tableViewCell类:
class QuestionTableViewCell: UITableViewCell {
@IBOutlet weak var question: UILabel!
@IBOutlet weak var answer: UISegmentedControl!
@IBOutlet weak var comment: UITextView!
这是我的表格View cellForRowAtIndex:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("QuestionCell", forIndexPath: indexPath) as! QuestionTableViewCell
cell.question.text = "\(indexPath.row + 1). " + questions[indexPath.row]
// check answer and set it to segmentedControl and set color
if questionsAnswers[indexPath.row] == "YES" {
cell.answer.selectedSegmentIndex = 0
cell.answer.tintColor = UIColor(hex: 0x42DC5A)
} else {
cell.answer.selectedSegmentIndex = 1
cell.answer.tintColor = UIColor(hex: 0xD9393E)
}
if cell.comment != nil {
cell.comment.delegate = self
cell.comment.text = "Add a note if necessary.."
cell.comment.textColor = UIColor.lightGrayColor()
}
if questionsAnswers[indexPath.row] == "YES" {
// here i have to hide cell.comment and its space
} else {
// here i have to show it if its possible
}
// pass indexPath.row to action
cell.answer.tag = indexPath.row
cell.answer.addTarget(self, action: "valueChanged:", forControlEvents: .ValueChanged)
return cell
}
// fires when user taps on segmentedControl
func valueChanged(sender: UISegmentedControl){
// switch segment and update questionsAnswers array
switch sender.selectedSegmentIndex {
case 0:
questionsAnswers[sender.tag] = "YES"
sender.tintColor = UIColor(hex: 0x42DC5A)
case 1:
questionsAnswers[sender.tag] = "NO"
sender.tintColor = UIColor(hex: 0xD9393E)
default:
break
}
}
问题 - 包含问题文本的数组
答案 - 当我从分段控件保存值时的数组
抱歉,如果我的问题很糟糕,我是ios编程新手(
谢谢大家,我在tableViewCell类中为text View的高度限制创建了一个IBOutlet:
@IBOutlet weak var heightConstraint: NSLayoutConstraint!
然后我替换这段代码:
if questionsAnswers[indexPath.row] == "YES" {
cell.heightConstraint.constant = 0.0
} else {
cell.heightConstraint.constant = 70.0
}
它运行良好,但我在调试器中得到了这个:
可能下面列表中至少有一个约束是您不想要的。试试这个:(1)看每一个约束,试着弄清楚哪个是你不期望的;(2)找到添加了不需要的一个或多个约束的代码并修复它。(注意:如果您看到不理解的NSAutoresizingMaskLayoutConstraints,请参考UIView属性translatesAutoresizingMaskIntoConstraints的文档)
"<NSLayoutConstraint:0x7f9fc2f45300 V:[UITextView:0x7f9fc3017a00'Add a note if necessary..'(70)]>",
"<NSLayoutConstraint:0x7f9fc2df4460 UILabel:0x7f9fc2f40410'3. Question sadsadas das ...'.top == UITableViewCellContentView:0x7f9fc2f402d0.topMargin>",
"<NSLayoutConstraint:0x7f9fc2df4550 V:[UILabel:0x7f9fc2f40410'3. Question sadsadas das ...']-(NSSpace(8))-[UISegmentedControl:0x7f9fc2f40e20]>",
"<NSLayoutConstraint:0x7f9fc2df4700 UITextView:0x7f9fc3017a00'Add a note if necessary..'.bottom == UITableViewCellContentView:0x7f9fc2f402d0.bottomMargin>",
"<NSLayoutConstraint:0x7f9fc2df4750 V:[UISegmentedControl:0x7f9fc2f40e20]-(NSSpace(8))-[UITextView:0x7f9fc3017a00'Add a note if necessary..']>",
"<NSLayoutConstraint:0x7f9fc2ed5060 'UIView-Encapsulated-Layout-Height' V:[UITableViewCellContentView:0x7f9fc2f402d0(81.5)]>" )
我应该改变一些约束吗?还有一个问题,如果用户在分段控件上单击“否”,我想向用户显示该文本视图。
我可以这样做吗:
// pass indexPath.row to action
cell.answer.tag = indexPath.row
cell.answer.addTarget(self, action: "valueChanged:", forControlEvents: .ValueChanged)
// fires when user taps on segmentedControl
func valueChanged(sender: UISegmentedControl){
// switch segment and update questionsAnswers array
switch sender.selectedSegmentIndex {
case 0:
questionsAnswers[sender.tag] = "YES"
sender.tintColor = UIColor(hex: 0x42DC5A)
tableView.reloadData()
case 1:
questionsAnswers[sender.tag] = "NO"
sender.tintColor = UIColor(hex: 0xD9393E)
tableView.reloadData()
default:
break
}
}
只需重新加载tableView与新问题答案数组?
如果使用自动布局,可以向文本视图添加高度约束,并在单元格子类中向其添加IBOutlet
。只需设置myConstraint。如果要隐藏常量,请将其
设置为零。
在接口生成器中打开xib。然后按住ctrl键将约束拖动到该视图的UIViewController。
对于您的案例,您需要textView
的高度以及segmentedControl
之后,只需设置高度
约束常量 = 0
和间距约束常量 = 0
。
如果只设置高度1,则
segmentedControl
和底部布局之间会有两个间距,如其他答案所建议的那样。
如果需要再次显示,只需确保保存约束常量的初始值,然后按如下方式设置它们即可。constant=initialHeight
和间距约束。常量=初始间距
问题内容: 按下后如何隐藏“编辑”链接?当我按下编辑键时,是否还可以隐藏“ lorem ipsum”文本? 问题答案:
问题内容: 我第一次弄乱React.js,找不到通过click事件在页面上显示或隐藏内容的方法。我没有在页面上加载任何其他库,所以我正在寻找使用React库的本机方法。到目前为止,这就是我所拥有的。当点击事件触发时,我想显示结果div。 问题答案: 大约在2020年做出反应 在回调中,调用状态挂钩的 setter函数以更新状态并重新渲染: JSFiddle 反应约2014年 关键是使用来更新点击处
本文向大家介绍jQuery控制元素隐藏和显示,包括了jQuery控制元素隐藏和显示的使用技巧和注意事项,需要的朋友参考一下 1、jQuery隐藏和显示效果 通过 jQuery,您可以使用 hide() 和 show() 方法来隐藏和显示 HTML 元素: 2、jQuery淡入淡出效果 通过 jQuery,您可以实现元素的淡入淡出效果。 jQuery 拥有下面四种 fade 方法: fadeIn()
我有一个问题隐藏和显示一个元素取决于一个布尔变量在角2。 这是div要显示和隐藏的代码: 变量已“编辑”,并存储在我的组件中: 元素是隐藏的,当saveTodos函数启动时,会显示元素,但3秒钟后,即使变量返回为false,元素也不会隐藏。为什么?
本文向大家介绍jQuery元素的隐藏与显示实例,包括了jQuery元素的隐藏与显示实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jQuery元素的隐藏与显示的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的jQuery程序设计有所帮助。
我有一个来自服务器的响应,我想把它放到列表中。但是当列表为空时,我需要隐藏这个div容器。例如,如果不在数组中-我想隐藏div。但是我想在ng之后使用bird重复,所以我不能使在上。我可以检查li是否为空,然后隐藏div吗? 普朗克例子 AngularJS ng-重复处理空列表大小写-这是不一样的。如果li是空的,我不想隐藏li,我想在li是空的时候隐藏父元素h1。