如何更改 IASKSpecifierValuesViewController 中的背景或文本标签颜色?
how to change background or textLabel color in IASKSpecifierValuesViewController?
我正在我的项目中使用 InAppSettingsKit。
我定制了 IASKAppSettingsViewController 但我没有定制 IASKSpecifierValuesViewController。
我的 IASKAppSettingsViewController 自定义 Class;
import UIKit
class SettingsViewController: IASKAppSettingsViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = super.tableView(tableView, cellForRowAt: indexPath)
cell.backgroundColor = .clear
cell.textLabel?.textColor = .white
cell.detailTextLabel?.textColor = .gray
cell.selectionStyle = .none
return cell
}
}
如何调用自定义 IASKSpecifierValuesViewController class?
注意:我正在使用故事板。我在没有情节提要解决方案的情况下开放。谢谢大家...
老实说,目前还没有很好的解决方案。您可以做什么:使用方法混合来覆盖 tableView:cellForRowAtIndexPath:
方法。另一种方法是使用 custom view 在选择时推送 IASKSpecifierValuesViewController
子类。
或者您可以修改 IASK 以在 IASKSettingsDelegate
中添加回调。这可能是这样的:
- (UITableViewCell*)tableView:(UITableView*)tableView valueCellForSpecifier:(IASKSpecifier*)specifier index:(NSUInteger)index;
要实现这一点,必须将委托传播到 IASKSpecifierValuesViewController
如果实现,它将执行回调。
或者,作为一种更灵活的解决方案,我们可以允许使用 IASKSpecifierValuesViewController
的自定义子类,可能通过在 settings.plist 中指定 IASKViewControllerClass
来覆盖默认的 IASKSpecifierValuesViewController
.
我欢迎这样的拉取请求! (我是 IASK 维护者。)
好的,我找到了解决方案。
我重写了 didSlectRowAtIndexPath 方法。
import UIKit
class SettingsViewController: IASKAppSettingsViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.backgroundColor = .black
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = super.tableView(tableView, cellForRowAt: indexPath)
cell.backgroundColor = .clear
cell.textLabel?.textColor = .white
cell.selectionStyle = .none
return cell
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
//Creating specifier object
let specifier = self.settingsReader.specifier(for: indexPath)
//Creating a custom IASKSpecifierValuesViewController instance
let targetViewController = SettingsDetail(style: .grouped)
targetViewController.currentSpecifier = specifier
targetViewController.settingsStore = settingsStore
targetViewController.settingsReader = settingsReader
self.navigationController?.pushViewController(targetViewController, animated: true)
}
}
详情查看源码:
import UIKit
class SettingsDetail: IASKSpecifierValuesViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.backgroundColor = .black
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = super.tableView(tableView, cellForRowAt: indexPath)
cell.backgroundColor = .clear
cell.textLabel?.textColor = .white
cell.selectionStyle = .none
return cell
}
}
我正在我的项目中使用 InAppSettingsKit。 我定制了 IASKAppSettingsViewController 但我没有定制 IASKSpecifierValuesViewController。
我的 IASKAppSettingsViewController 自定义 Class;
import UIKit
class SettingsViewController: IASKAppSettingsViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = super.tableView(tableView, cellForRowAt: indexPath)
cell.backgroundColor = .clear
cell.textLabel?.textColor = .white
cell.detailTextLabel?.textColor = .gray
cell.selectionStyle = .none
return cell
}
}
如何调用自定义 IASKSpecifierValuesViewController class? 注意:我正在使用故事板。我在没有情节提要解决方案的情况下开放。谢谢大家...
老实说,目前还没有很好的解决方案。您可以做什么:使用方法混合来覆盖 tableView:cellForRowAtIndexPath:
方法。另一种方法是使用 custom view 在选择时推送 IASKSpecifierValuesViewController
子类。
或者您可以修改 IASK 以在 IASKSettingsDelegate
中添加回调。这可能是这样的:
- (UITableViewCell*)tableView:(UITableView*)tableView valueCellForSpecifier:(IASKSpecifier*)specifier index:(NSUInteger)index;
要实现这一点,必须将委托传播到 IASKSpecifierValuesViewController
如果实现,它将执行回调。
或者,作为一种更灵活的解决方案,我们可以允许使用 IASKSpecifierValuesViewController
的自定义子类,可能通过在 settings.plist 中指定 IASKViewControllerClass
来覆盖默认的 IASKSpecifierValuesViewController
.
我欢迎这样的拉取请求! (我是 IASK 维护者。)
好的,我找到了解决方案。
我重写了 didSlectRowAtIndexPath 方法。
import UIKit
class SettingsViewController: IASKAppSettingsViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.backgroundColor = .black
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = super.tableView(tableView, cellForRowAt: indexPath)
cell.backgroundColor = .clear
cell.textLabel?.textColor = .white
cell.selectionStyle = .none
return cell
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
//Creating specifier object
let specifier = self.settingsReader.specifier(for: indexPath)
//Creating a custom IASKSpecifierValuesViewController instance
let targetViewController = SettingsDetail(style: .grouped)
targetViewController.currentSpecifier = specifier
targetViewController.settingsStore = settingsStore
targetViewController.settingsReader = settingsReader
self.navigationController?.pushViewController(targetViewController, animated: true)
}
}
详情查看源码:
import UIKit
class SettingsDetail: IASKSpecifierValuesViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.backgroundColor = .black
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = super.tableView(tableView, cellForRowAt: indexPath)
cell.backgroundColor = .clear
cell.textLabel?.textColor = .white
cell.selectionStyle = .none
return cell
}
}