Это не правильный путь. Это делает неверные предположения о закрытой компоновке класса ячейки и класса табличного представления.

ользую 2tableviews

как естьtextfiled вtableviewcell,

Я получаю текст из текстового поля вtextFieldDidEndEditing но как бы я узнал, что редактируемый текст принадлежит к какому виду таблицы, я просто хочу знать условие, в котором я могу дифференцировать текст, поступающий из текстового поля, для хранения в двух разных массивах.

func textFieldDidEndEditing(_ textField: UITextField)
{
  //  let indexOf = txtArray.index(of:textField.tag)

    if self.tblAnswer.isEditing
    {
        let indexOf = textField.tag

        if let text = textField.text
        {
            if allAnsText.indices.contains(indexOf)
            {
                allAnsText.remove(at: indexOf)
            }
            if text.isEmpty
            {
                print("Write some text there")
            }
            else
            {
            allAnsText.insert(text, at: indexOf)
            print(allAnsText)
            }
        }
    }
    else if self.tblVideo.isEditing
    {
        let indexOf = textField.tag

        if let text = textField.text
        {
            if allMediaText.indices.contains(indexOf)
            {
                allMediaText.remove(at: indexOf)
            }
            if text.isEmpty
            {
                print("Write some text there")
            }
            else
            {
                allMediaText.insert(text, at: indexOf)
                print(allMediaText)
            }
        }

    }

}
 rahul bandal22 сент. 2017 г., 09:51
@ Anbu.Karthik другой вид таблицы
 iPeter22 сент. 2017 г., 09:22
Пожалуйста, покажите несколько кодов, что вы пробовали.
 Prashant Tukadiya22 сент. 2017 г., 09:39
Что вы получаете textField.superView.superView?
 Anbu.Karthik22 сент. 2017 г., 09:24
ваша ячейка таблицы отличается или одинакова для обеих таблиц
 Prashant Tukadiya22 сент. 2017 г., 09:51
Если вы не хотите использовать только суперпредставление, то исправьте некоторую константу для Tableview 1 и tableview 2, скажем, для tableview 1 - 5000, а tableview 2 - 6000, Теперь в ячейке для строки укажите тег, например 5000/6000 + indexPath. строка иtextFieldDidEndEditing метод check tag> 6000 это таблица 2

Ответы на вопрос(2)

Решение Вопроса

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

Оригинальный ответ (для потомков)

Вместо этого попробуйте это:

Получить расположение текстового поля на экране:

// Center on text field's own coordinate system
let position = textField.frame.center

// Center on Window's coordinate system
let positionOnWindow = textField.convert(position, to: nil)

Преобразуйте эту точку в систему координат табличного представления и посмотрите, соответствует ли она строке:

let positionInTable = tableView1.convert(positionOnWindow, from: nil)</strike>

if let indexPath = tableView1.indexPathForRow(at: positionInTable) {
    // Text field is inside a row of table view 1
} else {
    // Otherwise
}

Примечание: Код выше не проверен. Может содержать ошибки компилятора.

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

Лучший ответ

Как правильно указано @rmaddy в комментариях, приведенный выше кодслишком окольный; Вы можете напрямую получить позицию с помощью:

let positionInTable = tableView1.convert(textField.frame.center, from: textField)

(нет необходимости поездки в систему координат окна и обратно)

 rmaddy16 дек. 2018 г., 23:39
Это сложнее, чем нужно. Просто сделать:let positionInTable = tableView1.convert(textField.frame.center, from: textField).
 Nicolas Miari16 дек. 2018 г., 23:48
@rmaddy Вы правы. Я обновлю этот ответ, как только доберусь до своего стола.
 rahul bandal22 сент. 2017 г., 12:17
наконец, спасибо за усилия @ Николас Миари (особая благодарность), @ Паллави Срихаколлу, @ Салман Гумсани, @ Джон Сноу
 rahul bandal25 сент. 2017 г., 09:06
да это работает.
 Nicolas Miari22 сент. 2017 г., 12:16
Спасибо, что приняли ответ. Дайте мне знать, если вы заставили его работать (я не проверял код моего ответа).

Swift 3.x

Предполагая, что ваша иерархия textFiled:

TextField-> Cell-> TableView

Напишите эту строку кода вtextFieldDidEndEditing

print(textField.superview?.superview)
if textField.superview?.superview == myTable1 {

}
else if textField.superview?.superview == myTable2 {

}
else {

}
 Salman Ghumsani22 сент. 2017 г., 09:32
Спасибо за напоминание
 Nicolas Miari22 сент. 2017 г., 09:53
Там нет клеткипросмотр содержимого между текстовым полем и ячейкой? Внутренняя структураUITableView а такжеUITableviewCell являются деталями реализации, а не частью публичного API. Код, который опирается на эту структуру, очень хрупок.
 rmaddy16 дек. 2018 г., 23:40
Это не правильный путь. Это делает неверные предположения о закрытой компоновке класса ячейки и класса табличного представления.
 Prashant Tukadiya22 сент. 2017 г., 09:31
Почему ты не используешьelse if или напрямуюelse Вместо этого, здесь два, если не имеет смысла

Ваш ответ на вопрос