Как изменить цвет фона или textLabel в IASKSpecifierValuesViewController? - PullRequest
0 голосов
/ 10 мая 2018

Я использую InAppSettingsKit в моем проекте.Я настроил IASKAppSettingsViewController Но я не настраиваю IASKSpecifierValuesViewController.

мой пользовательский класс IASKAppSettingsViewController;

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?Примечание: я использую раскадровку.Я открыт без раскадровочных решений.Спасибо, ребята ...

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Окей, я нашел решение.

Я переопределяю метод 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
  }
}
0 голосов
/ 11 мая 2018

Сейчас не очень хорошее решение, если честно. Что вы можете сделать: используйте метод swizzling, чтобы переопределить метод tableView:cellForRowAtIndexPath:. Другой подход заключается в использовании пользовательского представления , в котором вы нажимаете свой подкласс IASKSpecifierValuesViewController при выборе.

Или вы можете изменить IASK для добавления обратного вызова в IASKSettingsDelegate. Это может быть что-то вроде:

- (UITableViewCell*)tableView:(UITableView*)tableView valueCellForSpecifier:(IASKSpecifier*)specifier index:(NSUInteger)index;

Для реализации этого делегат должен быть передан в IASKSpecifierValuesViewController, который будет выполнять обратный вызов, если реализован.

Кроме того, в качестве более гибкого решения мы могли бы разрешить использование пользовательского подкласса IASKSpecifierValuesViewController, возможно, указав IASKViewControllerClass в файле settings.plist для переопределения значения по умолчанию IASKSpecifierValuesViewController.

Я бы приветствовал такой запрос на выдачу! (Я поддерживаю IASK.)

...