Используя UITableView разделяют на подклассы с UITableViewController

Наиболее простым решением было бы придерживаться шаблона MVVM, создав коллекцию и наполнив ее данными из другого класса, как вы уже упоминали. Это легко, и все знают, что происходит. Кроме того, таким образом, контекст данных остается в той же модели представления и - если вы что-то меняете - он также остается в этом контексте. В вашем случае это означает, что вы должны создать ObservableCollection<Student> Students и заполнить его содержимое в MainViewModel.


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

14
задан HansUp 12 November 2013 в 11:34
поделиться

3 ответа

Задайте для свойства UITableViewController.tableView экземпляр вашего настраиваемого подкласса UITableView.

15
ответ дан 1 December 2019 в 13:22
поделиться

UITableViewController - это просто UIViewController с экземпляром UITableView и viewController, установленным в качестве делегата и источника данных для таблицы. ViewController реализует заглушки для этих методов делегата.

Вы можете сделать это самостоятельно, если UIViewController реализует протоколы UITableViewDataSource и UITableViewDelegate. Затем в методе loadView (или viewDidLoad) UIViewController установите dataSource экземпляра tableView и делегируйте self.

Вы можете использовать там свой собственный подкласс таблицы.

-2
ответ дан 1 December 2019 в 13:22
поделиться

Хорошо, я нашел другой алгоритм: метод псевдонима (также упоминается в этом ответе ). По сути, он создает такое разделение вероятностного пространства, что:

  • Есть n разделов, все одинаковой ширины r st nr = m . . 1216] каждый раздел содержит два слова в некотором соотношении (которое сохраняется вместе с разделом).
  • для каждого слова w i , f i = ∑ разделы t st w i ∈ t r × ratio (t, w i )

Поскольку все разделы имеют одинаковый размер, выбор раздела может выполняться в постоянной работе (выберите случайным образом индекс из 0 ... n-1 ), а раздел Затем можно использовать коэффициент s, чтобы выбрать, какое слово будет использоваться в постоянной работе (сравните число в формате pRNG с соотношением между двумя словами). Таким образом, это означает, что выбор p может быть выполнен в O (p) работе с таким разделом.

Причина, по которой такое разделение существует, состоит в том, что существует слово w i st f i , если и только если существует слово w i ' st f i '> r , поскольку r - среднее значение частот.

Для такой пары w i и w i ' мы можем заменить их псевдословом w' i частоты f ' i = r (что представляет w i с вероятностью f i / r и w i ' с вероятностью 1 - f i / r ) и новым словом w' i ' настроенной частоты ] f ' i' = f i ' - (r - f i ) соответственно. Средняя частота всех слов по-прежнему будет r, и по-прежнему действует правило из предыдущего абзаца. Поскольку псевдослово имеет частоту r и состоит из двух слов с частотой r, мы знаем, что если мы будем повторять этот процесс, мы никогда не получим псевдослово из псевдослова, и такая итерация должна заканчиваться последовательность из n псевдословов, которые являются искомым разделом.

  • одно из слов с частотой ≤ r
  • одно из слов с частотой> r
  • затем вытащить слово из первого списка
    • если его частота = r, то превратить его в одноэлементный раздел
    • в противном случае, извлечь слово из другого списка и использовать его для заполнения двухсловного раздела. Затем верните второе слово в первый или второй список в соответствии с его скорректированной частотой.
  • Это действительно работает, если количество разделов q> n (вам просто нужно доказать это по-другому). Если вы хотите убедиться, что r является целым, и вы не можете легко найти множитель q из m st q> n , вы можете заполнить все частоты в n , так что f ' i = nf i , что обновляет m' = mn и устанавливает r '= m , когда q = n .

    В любом случае,

    6
    ответ дан 1 December 2019 в 13:22
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: