我有一个用于表视图的自定义Header类,无论何时使用它,我都会不断收到此错误:
[TableView]不建议在UITableViewHeaderFooterView上设置背景颜色。请改为将具有所需背景颜色的自定义UIView设置为backgroundView属性。
这是我尝试过的一些事情:
我在UITableViewHeaderFooterView子类的awakeFromNib()中添加了一个backgroundView:
package learnjava;
import java.util.Scanner;
public class exception {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int x =1;
do {
try {
System.out.println("Input first number : ");
int n1 = input.nextInt();
System.out.println("Input second number : ");
int n2 = input.nextInt();
int sum = n1 / n2;//if your n2 input was 0 exception happened and go to catch block.
System.out.println("result = "+sum);
x = 2;// if one time your code execute without exception the x changed to 2. if exception happened your code execute again.
} catch (Exception e) {
System.out.println("Error");
}
} while (x == 1);
}
}
我在tableView函数中添加了backgroundView,它定义了标头部分:
override func awakeFromNib() {
super.awakeFromNib()
self.backgroundView = UIView(frame: self.bounds)
self.backgroundView?.backgroundColor = UIColor(red:0.84, green:0.47, blue:0.97, alpha:1.0)
}
完成所有这些操作后,我仍然会收到错误消息。
答案 0 :(得分:1)
我能够防止出现错误。这是我的操作方式:
转到标题的Xib文件,并为背景色选择默认值。然后,在viewForHeaderInSection函数中,添加:
let backgroundView = UIView(frame: CGRect.zero)
backgroundView.backgroundColor = UIColor(white: 0.5, alpha: 0.5)
headerView.backgroundView = backgroundView
我知道我在问题中提到了它,但是关键是将xib背景色设置为“默认”。
答案 1 :(得分:0)
检查您是否必须设置process.js
在您的headerView.backgroundColor = UIColor(white: 0.5, alpha: 0.5)
函数中。
此外,这足以添加背景色
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?
答案 2 :(得分:0)
如果可以继承UITableViewHeaderFooterView
的类,则可以尝试这种方法。
class SampleHeaderView: UITableViewHeaderFooterView {
override func awakeFromNib() {
super.awakeFromNib()
let bgView = UIView(color: .black)
addSubview(bgView)
bgView.translatesAutoresizingMaskIntoConstraints = false
let layoutAttributes: [NSLayoutAttribute] = [.top, .leading, .bottom, .trailing]
layoutAttributes.forEach { attribute in
addConstraint(NSLayoutConstraint(item: bgView,
attribute: attribute,
relatedBy: .equal,
toItem: self,
attribute: attribute,
multiplier: 1,
constant: 0.0))
}
}
}
extension UIView {
convenience init(color: UIColor) {
self.init(frame: .zero)
backgroundColor = color
}
}
答案 3 :(得分:0)
使用名称(FooBar fb) => identical(fb, fb3)
时,您不会收到错误消息:
1)歧义使用“ backgroundView”
2)无法覆盖可变属性“ backgroundView”
3)无法使用存储的属性“ backgroundView”覆盖
由于您没有添加backgroundView
,因此您正在使用backgroundView
拥有的那个。
对于UITableViewHeaderFooterView
:
awakeFromNib
对于override func awakeFromNib() {
super.awakeFromNib()
let bgView = UIView(frame: self.bounds)
bgView.backgroundColor = UIColor(red:0.84, green:0.47, blue:0.97, alpha:1.0)
self.addSubview(bgView)
}
:
viewForHeaderInSection
您只需要将名称func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
if let headerView = tableView.dequeueReusableHeaderFooterView(withIdentifier: Header.identifier) as? Header {
// Extraneous Code
let bgView = UIView(frame: headerView.bounds)
bgView.backgroundColor = UIColor(white: 0.5, alpha: 0.5)
headerView.addSubview(bgView)
return headerView
// Extraneous code
}
return UIView()
}
更改为其他名称即可。