Добавьте Nsattributed строку и строку в swift - PullRequest
1 голос
/ 29 мая 2019

У меня есть динамические данные, я загружаю эти данные в табличное представление, но эти данные имеют смешение атрибутных и обычных строк.

Здесь я получаю как «Tap here», я хочу расширить эту строку с помощьюСиний цвет и выберите, что нужно открыть URL.

Я пишу следующий код, но он выдает ошибку.

Двоичный оператор '+' нельзя применить к операндам типа 'String 'и' NSMutableAttributedString '

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "WhatisrewardsTableViewCell", for: indexPath)as! WhatisrewardsTableViewCell
        cell.imageview.image = images[indexPath.section][indexPath.row]
        cell.titlelbl.text = tilenames[indexPath.section][indexPath.row]
        cell.desclbl.text = descriptions[indexPath.section][indexPath.row]

        let value = " here.".withTextColor(UIColor.disSatifyclr)

        if (cell.desclbl.text?.contains("tap"))!{
           // cell.desclbl.text?.attributedString
            cell.desclbl.text = descriptions[indexPath.section][indexPath.row] + value
        }

        cell.desclbl.addLineSpacing()
        return cell
    }

1 Ответ

0 голосов
/ 29 мая 2019

Вы не можете добавить NSAttributedString к объектам String.Я бы посоветовал вам сгенерировать обычную строку и затем добавить к ней приписанные параметры.

func prepareURLString() -> NSMutableAttributedString {

        let masterString = "To navigate to google Tap Here."

        let formattedString = NSMutableAttributedString(string: masterString)

        let formattedStringAttribute = [
            NSAttributedString.Key.font: UIFont.systemFont(ofSize: 13, weight: .regular),
            NSAttributedString.Key.foregroundColor: UIColor(red: 51.0/255.0, green: 51.0/255.0, blue: 51.0/255.0, alpha: 1),
            ] as [NSAttributedString.Key : Any]

        let privacyPolicyAttribute = [
            NSAttributedString.Key.font: UIFont.systemFont(ofSize: 13, weight: .bold),
            NSAttributedString.Key.foregroundColor: UIColor.blue,
            NSAttributedString.Key.underlineStyle: 1,
            NSAttributedString.Key.link: URL(string: "https://www.google.com")!
            ] as [NSAttributedString.Key : Any]

        formattedString.addAttributes(formattedStringAttribute, range: NSMakeRange(0, formattedString.length))

        let privacyPolicyRange = (masterString as NSString).range(of: "Tap Here")
        formattedString.addAttributes(privacyPolicyAttribute, range: privacyPolicyRange)

        return formattedString
    }

Эта функция вернет приписанную строку, которую вы можете использовать по своему усмотрению.С помощью tableview вы можете передать некоторые параметры и изменить строки атрибутов ячейки.Я добавил ссылку Google за «Нажмите здесь», и она показывает вывод, как показано ниже:

enter image description here

Надеюсь, я правильно понял ваш вопрос, и этов чем-то помогает.

...