Как разделить содержимое tableView на разные файлы?

swift

#1

Необходимо из разных файлов вызывать данные в tableView.

Создал отдельный swift файл с таким содержанием:

import UIKit

class sas: UITableViewController {

func tv(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! TableViewCell
    cell.dfg.text = "4321"
    
    return cell
}

}

И в основном файле пытаюсь вызвать класс sas и функцию tv, которые в отдельном файле.

func customClass(someObject: sas) -> String {
    return someObject.tv(UITableView, cellForRowAt: IndexPath)
    
}

В итоге выдает ошибку: Cannot convert value of type ‘UITableView.Type’ to expected argument type ‘UITableView’

Подскажите что я делаю не так


#2

Здравствуйте!
Вы передаёте в аргумент функции someObject.tv просто ожидаемый тип, вместо конкретного значения. Например, если вы у вас была такая функция:

func plus(_ first: Int, _ second: Int) -> Int {
return first + second
}

Образно, при вызове вы сейчас делаете так: plus(Int, Int). Вместо: plus(1, 3).
То есть, например, заместо UITableView вы можете поставить someObject.tableView.

Ещё функция someObject.tv возвращает UITableViewCell, а функция customClass ожидает возврата String.

А вы уверены, что это у вас будет рабочая схема с переносом информации в таблицу? Я, наверно, не до конца понимаю ваш замысел, но вам не подходит “базовое” решение?

class Sas {
let someString = "Privet"
// ...
}
// в другом файле
class Asa {
let someString = "Poka"
// ...
}

В основном файле вашей таблицы:

let sas = Sas()
let asa = Asa()
override func tableView(_ tableView: UITableView, cellForRowAt indexPath:    IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
    if indexPath.row = 0 {
    cell.textLabel?.text = sas.someString } else {
    cell.textLabel?.text = asa.someString } // другая логика
    return cell
}

#3

На счет рабочей схемы не уверен)
У меня в tableView 1000+++ строк , хочется как-то разгрузить… xcode лагает(
Увидел эту тему Проблемы с большим объёмом кода
,а потом эту Разделить код на разные файлы
Подумал что tableView можно разбить на несколько файлов, чтоб в нужный момент вызывалась нужный отрезок кода…


#4

Вам нужно логику выносить в другие места - логику вью во вью, бизнес логику - в модели.


#5

А можно пример, если не сложно?


#6

Сбросьте свой вьюконтроллер (только файлом, желательно на гугл диск или дропбокс), на примере покажу


#7

Выложи и сюда пример )


#8

Это не мой поект, автор захочет - выложит.