Вопросы с тегами [uitableview]

0

голосов
1

ответ
16

Просмотры

Добавлено Autolayout в UITableViewCell, но я вижу неизвестное явление

Я добавил Autolayout к элементам в UITableViewCell, но у меня есть неизвестная ошибка. Все элементы, добавленные с AutoLayout будут выровнены по верхнему левому углу. Если добавить Auto Layout в General Ярлык: После сборки Результат: смещениями Общие этикетки в верхнем левом углу Это верно и для других предметов, а также. Если добавить Auto Layout в общее, Total, Final Ярлык: Там нет коды, связанной с ограничением. UITableViewCell также не имеет коды. В View Controller: FUNC Tableview (_ Tableview: UITableView, numberOfRowsInSection раздел: Int) -> Int {1} вернуться Func Tableview (_ Tableview: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {пусть клеток = tableView.dequeueReusableCell (withIdentifier: "ProcDetailMoreCell", для: indexPath), как! ProcDetailMoreCell возврата клеток} Func Tableview (_ Tableview: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {вернуться CGFloat (175)} Я не знаю, почему это происходит. Пожалуйста, помогите мне понять, почему эти результаты.
Enkha
1

голосов
2

ответ
63

Просмотры

Многократное Пользовательские UITableViewCell с использованием в Tableview (_cellForRowAt :)

У меня есть некоторые пользовательские UITableViewCell, и будет использовать некоторые из них случайным образом. Но после того, как я их зарегистрировать, он врезался в Tableview (_cellForRowAt :). Вот мой код: в методе viewDidLoad tableView.register (CustomACell.self, forCellReuseIdentifier: "Идентификатор") tableView.register (CustomACell.self, forCellReuseIdentifier: "Идентификатор") функ Tableview (_ Tableview: UITableView, cellForRowAt indexPath: IndexPath) - > UITableViewCell {пусть модель = DATASOURCE [indexPath.row], если пусть тип = model.type {тип переключателя {случай .A: пусть клетка = tableView.dequeueReusableCell (withIdentifier: MyIdentifier), как! CustomACell cell.assgin (сообщение: модель) возвращение клеток случай .B: пусть клетка = tableView.dequeueReusableCell (withIdentifier: MyIdentifier), как! CustomBCell cell.assgin (сообщение: модель) возвращение клеток}} пусть клетка = tableView.dequeueReusableCell (withIdentifier: MyIdentifier), как! CustomACell cell.assgin (сообщение: модель) возвращение клеток} Если зарегистрировать как он вылетал в случае .A. Если я не буду, некоторые из них будут врезаться в tableView.dequeueReusableCell. Вот один из информации консоли ошибки: Не удалось бросить значение типа «TM.CustomACell» (0x10bb40940) к «TM.CustomBCell» (0x10bb40578).
Dean Lee
1

голосов
1

ответ
551

Просмотры

UITableView - сноска для секции - iPhoneX

У меня есть проблемы с iPhone и UITableView разделе колонтитула. Это время «скрытый» за секцией верхнего выреза. У меня есть этот код: переопределения Func Tableview (_ Tableview: UITableView, viewForFooterInSection раздел: Int) -> UIView? {Вар содержание = "некоторые длинный текст" пусть footerView = UIView (кадр: CGRect (х: 0, Y: 0, ширина: view.frame.size.width, высота: 40)) пусть explanationLabel = UILabel (кадр: CGRect ( х: 10, у: 0, ширина: view.frame.size.width - 20, высота: 50)) explanationLabel.font = UIFont.systemFont (ofSize: 14, вес: UIFont.Weight.light) explanationLabel.textColor = UIColor .darkGray explanationLabel.numberOfLines = 0 explanationLabel.lineBreakMode = .byTruncatingTail explanationLabel.text = footerView содержание. addSubview (explanationLabel) возвращение footerView} Мой UITableViewController добавляется из раскадровки и безопасные районы устанавливаются. У меня нет никаких проблем с строками таблицы, только с разделом сноской.
Martin Perry
1

голосов
0

ответ
30

Просмотры

Core Data: split into sections based on custom logic

У меня есть большие наборы данных объектов, состоящие из 2-х больших иш подмножеств. Установка 1 имеет около 10 000 объектов в нем. Набор 2 имеет около 70 000 объектов в нем. Наборы объектов имеют много-ко-многим между ними. Есть также «избранные» подмножества для обоих наборов. Перед тем, как отображать набор 1 или набор 2, у меня будет подмножество из другого набора водить мой запрос / выборки. Скажем: Я отобрал 10 объектов из набора 1. Я хотел бы, чтобы отобразить набор 2. Я хотел бы установить 2, которые будут сгруппированы в 3-х секций: Секция 1 будет объекты в наборе 2, которые имеют отношения с 10 выбранных объектов из установить 1. раздел 2 будет объекты в «Избранное» подмножества, которые не в # 1. Раздел 3 будет все остальное. Таким образом, концептуально, у меня есть следующие шаги (опять же, учитывая 10 выбранных объектов из набора 1 и «избранных» подмножество из 2 набора): Рисунок из которых объекты в наборе 2 соответствуют выбранным объектам из набора 1. Установка # 1 в сторону и удалить их из общего набора (но только для этого дисплея). Рисунок из которых объекты оставлены в наборе 2, которые также в «избранных» подмножества. Set # 2 в сторону и удалить их из общего набора (опять же, только для этого дисплея). Рисунок из которых остались объекты. В конце этого, я хотел бы, чтобы отобразить 3 секции в UITableView. Я видел этот вопрос, но я не был уверен, были ли поставленные ответы: Еще действительны (это было почти 7 лет, так как был задан вопрос) Действительно для моего случая использования. (Будет ли расчетный метод возвращает номер раздела? Если да, то я должен пройти в обоих подмножествах, на которых я делаю свою фильтрацию? Как это будет выступать с такими большими наборами данных?) бы я должен пройти в обоих подмножествах, на которых я делаю свою фильтрацию? Как это будет выполнять с такими большими наборами данных?)
mbm29414
1

голосов
0

ответ
36

Просмотры

Checking Against Value From Array and Return Cell

Я 2 массивов A и B. Возьмем, например, массив А имеет поле А1, а матрица B имеет 2 поля B1 и B2. Оба массива содержит то же самое переменный - A1, B1 Я пытаюсь проверить значение массива B (B1) по отношению к тексту Раздел заголовку TableView С indexPath.section и indexPath.Row используются в TableViews, я надеялся, что я может реально использовать их для перебора массива B. Если значение обоего значений, указанных выше, соответственно, равно, я хотел бы вернуться в клетку, которая в этом случае, используя либо indexPath.section от indexPath.Row для получения значения Массив B - поле (B2) и что будет cell.text, что я буду возвращаться. Я помогаю проблемы заставить его работать .. Цените любую помощь или руководство .. Спасибо Вот коды .. функ Tableview (_ Tableview: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {пусть sectionViewHeader = tableView.headerView (forSection: indexPath.section) пусть programNameSection = sectionViewHeader .textLabel .text пусть клеток = tableView.dequeueReusableCell (withIdentifier: "сота")? Пусть tempFullProgramName = с [indexPath.row] .fullProgramName пусть tempCourseName = с [indexPath.row] .courseName, если tempFullProgramName == programNameSection {клеток? .textLabel? .text = tempCourseName} возвращение клеток !; } courseName если tempFullProgramName == programNameSection {клетка? .textLabel? .text = tempCourseName} возвращение клеток !; } courseName если tempFullProgramName == programNameSection {клетка? .textLabel? .text = tempCourseName} возвращение клеток !; }
ybba
1

голосов
3

ответ
1.3k

Просмотры

Как я могу заполнить два разных TableView в одном ViewController в скор 3

FUNC Tableview (_ Tableview: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {если Tableview == table1 {пусть клетка = tableView.dequeueReusableCell (withIdentifier: "клетка"), как! acntTableViewCell cell.account.text = счета [indexPath.row] .EMAIL вернуть клетку} еще если Tableview == таблица2 {пусть CELL2 = tableView.dequeueReusableCell (withIdentifier: "CELL2"), как! popTableViewCell cell2.pop.text = поп [indexPath.row] вернуться CELL2 Отвечать на}} // его дать мне здесь ошибка Missing возвращение в функции я собираюсь заполнить две различные таблицы в одном ViewController. когда я вернусь клеткой это дает мне ошибку Отсутствующему возврат в функции, где я делаю неправильно может предложить любого из меня, что случилось с этим кодом
ahmed
1

голосов
2

ответ
50

Просмотры

Swift - Ошибка при простом Segue между TableViewController -> ViewControllers

Я пытаюсь передать два значения строки, содержащие значения в «Bar Name» и соответствующего «Street Name» с помощью SEGUE между TableViewController и ViewController. Я использую класс под названием HomeController, а другой называется BarPage. У меня есть следующий код, подготовленный для домашнего экрана, который представляет собой таблицу View Controller, удерживающие клетки, которые при нажатии должны выполнить SEGUE я включил на раскадровке. Я удалил код, который был бы излишним объяснять эту проблему: импорт UIKit импорт Firebase класса HomeController: UIViewController, UITableViewDelegate, UITableViewDataSource {пусть barsArray = [Data (изображение: "bar1", улица: "123 North Street"), данные ( изображение: "bar2", улица: "345 South Street"), данные (изображение: "Bar3", улица: "678 West Street")] пусть Tableview: UITableView = {пусть тв = UITableView () tv.separatorStyle = .none tv.allowsSelection = истинного возврата ТВ} () FUNC Tableview (_ Tableview: UITableView, numberOfRowsInSection раздел: Int) -> Int {вернуться barsArray.count} Func Tableview (_ Tableview: UITableView, heightForRowAt indexPath: indexPath) -> CGFloat {100} вернуться Func NumberOfSections (в Tableview: UITableView) -> Int {1} вернуться Func Tableview (_ Tableview: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {пусть клеток = tableView.dequeueReusableCell (withIdentifier: "клетка", для: indexPath), как! BarCell cell.barImageView.image = UIImage (названный: barsArray [indexPath.item] .image! ) Cell.barCoverLabel.text = "Улица:" + barsArray [indexPath.item] .Уличная! вернуться клеток} уаг locationName: String? вар locationStreet: String? Override FUNC подготовки (для Segue: UIStoryboardSegue, отправитель: Любой) {пусть barPage = segue.destination как! BarPage barPage.barName = locationName! barPage.barStreet = locationStreet! } FUNC Tableview (_ Tableview: UITableView, didSelectRowAt indexPath: IndexPath) {locationName = self.barsArray [indexPath.row] .image locationStreet = self.barsArray [indexPath.row] .Уличная // Когда пользователь нажимает ROW, PERFORM SEGUE performSegue (withIdentifier: "mySegue", отправитель: сам) // Затем введите второй контроллер представления, присутствующий (BarPage (), анимированный: истинное, завершение: ноль)} переопределение FUNC viewDidLoad () {super.viewDidLoad () self.tableView.backgroundColor = .black setUpTableView ()} функ setUpTableView () {tableView.dataSource = само tableView.delegate = само tableView.register (BarCell.self, forCellReuseIdentifier : "клетка") view.addSubview (Tableview) .... добавить якорей и ограничения для просмотра таблицы ..........}} уаг дом: HomeController? Класс BarCell: UITableViewCell {... добавить пользовательский стиль для каждой ячейки представления таблицы .... переопределить Init (стиль: UITableViewCellStyle, reuseIdentifier: String) {super.init (стиль: стиль, reuseIdentifier: reuseIdentifier) ​​настройки () } установки FUNC () {.......... добавить якоря и ограничения для ячейки .......... } Требуется инициализации (кодировщик aDecoder: NSCoder)? {FatalError ( «INIT (кодировщик :) не был реализован»)}} Вот код из контроллера View BarPage, который должен быть извлекая строки из его Segue. импорт UIKit импорт Firebase класс BarPage: UIViewController {пусть HomeController = HomeController () // Это, в теории, должны быть переменные, извлекающие строки через мой SEGUE вар barName = String () вар barStreet = String () публичное пусть barStreet: UILabel = {вар метка = UILabel () label.text = "улица:" // + barStreet label.textColor = .black label.font = UIFont.boldSystemFont (ofSize: 16) возвращение метка} () пусть barImage: UIImageView = {пусть IV = UIImageView () iv.image = UIImage (названный: barName) // Если получить изображение на основе строки, которая передается iv.contentMode = .scaleAspectFill iv.backgroundColor = .yellow //iv.clipsToBounds = истинное возвращение IV} () переопределение функ viewDidLoad () {super.viewDidLoad () self.view.backgroundColor = UIColor.mint () view.addSubview (barStreet) view.addSubview (barImage) positionElements ()} функ positionElements () {.......... добавить якоря и ограничения для элементов. .........}} Если я запускаю мой код без включения SEGUE, переход работает просто отлично. Однако, если я включаю SEGUE, я получаю следующее сообщение об ошибке: *** Нагрузочным приложения из-за неперехваченное исключение «NSInvalidArgumentException», причина: «Receiver () не имеет SEGUE с идентификатором„mySegue“» Как это может быть возможным, если я на самом деле есть в моей SEGUE раскадровку с этим идентификатором? Вот картина моей раскадровки, которая показывает идентификатор, я использую: Как вы можете видеть справа, и тот же идентификатор совпадает для Segue в моей раскадровке, но моя ошибка утверждает, что она не может быть найдена. Как я могу исправить эту проблему? Является ли это происходит потому, что я пытаюсь выполнить переход от TableViewController? Извиняюсь за какую-либо двусмысленность, первый месяц в будучи Swift пользователя. Любые советы / совет, который бы мне точку в правильном направлении было бы чрезвычайно полезно. пока моя ошибка заявляет, что она не может быть найдена. Как я могу исправить эту проблему? Является ли это происходит потому, что я пытаюсь выполнить переход от TableViewController? Извиняюсь за какую-либо двусмысленность, первый месяц в будучи Swift пользователя. Любые советы / совет, который бы мне точку в правильном направлении было бы чрезвычайно полезно. пока моя ошибка заявляет, что она не может быть найдена. Как я могу исправить эту проблему? Является ли это происходит потому, что я пытаюсь выполнить переход от TableViewController? Извиняюсь за какую-либо двусмысленность, первый месяц в будучи Swift пользователя. Любые советы / совет, который бы мне точку в правильном направлении было бы чрезвычайно полезно.
user7366442
1

голосов
0

ответ
41

Просмотры

Можно ли изменить ячейки представления таблицы динамически с помощью сегментированного управления?

У меня есть контроллер с сегментированным управлением и представлением таблицы внутри него вид. Я знаю, что можно изменить содержимое ячеек в этом виде таблицы с использованием сегментированного управления (сохраняя эти клетки то же самое). Но что, если расположение клеток отличается, как существует различные подвиды в их представлении содержимого или есть одни и те же подвиды, но они расположены по-разному, с различными ограничениями? Можно ли каким-то образом использовать тот же вид таблицы и просто изменить клетки, которые он использует, или я должен использовать другой вид таблицы оживляющий его включения и выключения экрана (если это так, я все равно придется использовать один и тот же UITableViewDelegate и методы UITableViewDataSource, право?)? Если вы знаете ответ и лучший подход для этого, я был бы признателен за вашу помощь.
Tigran Iskandaryan
1

голосов
1

ответ
81

Просмотры

Swift удаленного поиска аварий Tableview

Эй, у меня есть TableView с панелью поиска поверх него. Я прошу удаленный покой апи с поиском термином. Searchbar FUNC выглядит следующим образом (по данным на этот пост: Как душить поиска (в зависимости от скорости набора текста) в IOS UISearchBar) функ SearchBar (_ SearchBar: UISearchBar, textDidChange SearchText: String) {NSObject.cancelPreviousPerformRequests (withTarget: Я, селектор : #selector (self.searchTeams), объект: ноль) self.perform (#selector (self.searchTeams), с: ноль, afterDelay: 0,3)} в searchTeams-Func выглядит так, она вызывает функцию асинхронность loadingJSON с микросхемой обработчик завершения: loadingJSON ( "APIPATH", postString: "STRING") {parseJSON в случае (String (описание: parseJSON) == "-1") {Print ( "Нет Интернет")} еще {если позволить командам = parseJSON [ " в AnyObject)})} вернуться, если позволить httpStatus = ответ как? HTTPURLResponse, httpStatus.statusCode = 200 {// Проверка на наличие ошибок HTTP печати ( "StatusCode должно быть 200, но \ (httpStatus.statusCode)") печать ( "ответ = \ (String (описывающего: ответ))")}! // JSON преуспевающим сделать {пусть parseJSON = попробовать JSONSerialization.jsonObject (с помощью: данные !, варианты: .allowFragments) DispatchQueue.main.async (выполнить: {completionHandler (parseJSON в AnyObject)}); } Поймать пусть ошибку как NSError {Print ( "Не удалось загрузить: \ (error.localizedDescription)")}} task.resume ()} = 200 {// Проверка на наличие ошибок HTTP печати ( "StatusCode должно быть 200, но \ (httpStatus.statusCode)") печать ( "ответ = \ (String (описывающего: ответ))")} // JSON преуспевающим сделать { пусть parseJSON = попробовать JSONSerialization.jsonObject (с: данные !, опции: .allowFragments) DispatchQueue.main.async (выполнение: {completionHandler (parseJSON в AnyObject)}); } Поймать пусть ошибку как NSError {Print ( "Не удалось загрузить: \ (error.localizedDescription)")}} task.resume ()} = 200 {// Проверка на наличие ошибок HTTP печати ( "StatusCode должно быть 200, но \ (httpStatus.statusCode)") печать ( "ответ = \ (String (описывающего: ответ))")} // JSON преуспевающим сделать { пусть parseJSON = попробовать JSONSerialization.jsonObject (с: данные !, опции: .allowFragments) DispatchQueue.main.async (выполнение: {completionHandler (parseJSON в AnyObject)}); } Поймать пусть ошибку как NSError {Print ( "Не удалось загрузить: \ (error.localizedDescription)")}} task.resume ()} )} // JSON преуспевающим сделать {пусть parseJSON = попробовать JSONSerialization.jsonObject (с: данные !, опции: .allowFragments) DispatchQueue.main.async (выполнить: {completionHandler (parseJSON в AnyObject)}); } Поймать пусть ошибку как NSError {Print ( "Не удалось загрузить: \ (error.localizedDescription)")}} task.resume ()} )} // JSON преуспевающим сделать {пусть parseJSON = попробовать JSONSerialization.jsonObject (с: данные !, опции: .allowFragments) DispatchQueue.main.async (выполнить: {completionHandler (parseJSON в AnyObject)}); } Поймать пусть ошибку как NSError {Print ( "Не удалось загрузить: \ (error.localizedDescription)")}} task.resume ()}
Marco Weber
1

голосов
5

ответ
61

Просмотры

Labels in custom TableViewCell always return their initialization values

I am fairly new to Swift and have researched the following problem extensively yet unsuccessfully. I've created a custom TableViewCell class named ConversationCell and defined its UI in a NIB/XIB file. import UIKit import SwipeCellKit class ConversationCell: SwipeTableViewCell { @IBOutlet weak var distanceLabel: UILabel! @IBOutlet weak var locationLabel: UILabel! @IBOutlet weak var subjectLabel: UILabel! @IBOutlet weak var bodyLabel: UILabel! @IBOutlet weak var profileImageView: UIImageView! @IBOutlet weak var usernameLabel: UILabel! @IBOutlet weak var starImageView: UIImageView! @IBOutlet weak var dateLabel: UILabel! var isFollowed = false override func awakeFromNib() { super.awakeFromNib() // Initialization code } } Then I wrote a simple class named Conversation that is the model class for ConversationCell. class Conversation { var distance = "123 ft." var location = "123 Market St" var date = "Yesterday, 10:45AM" var subject = "Default subject." var body = "Default body" // var subject = "My Subject" //var body = "My Body" var username = "worldsurfer" var profilePhoto = UIImage(named: "profilePhoto") } Finally, I added a TableView that uses the custom ConversationCell to my class HomeTabViewController, which is a ViewController acting as both the source and delegate for the TableView. Please take a look at the code below where I print the content of the labels in the cell within func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath). Instead of returning the label values that I've defined when initializing my conversation array (i.e., "1st Conversation", "2nd Conversation", "3rd Conversation" - which get properly displayed in the TableView at runtime), it returns the default label text values that are defined in the NIB file (i.e., "The spectable before us was indeed sublime."). import UIKit import SwipeCellKit class HomeTabViewController: CoreDesignViewController { @IBOutlet weak var tableView: UITableView! var conversationArray : [Conversation] = [] override func viewDidLoad() { super.viewDidLoad() tableView.register(UINib(nibName: "ConversationCell", bundle: nil), forCellReuseIdentifier: "homeTabCell") tableView.dataSource = self tableView.delegate = self let conversation1 = Conversation() conversation1.subject = "1st conversation" conversationArray.append(conversation1) let conversation2 = Conversation() conversation2.subject = "2nd Conversation" conversationArray.append(conversation2) let conversation3 = Conversation() conversation3.subject = "3rd conversation" conversationArray.append(conversation3) tableView.estimatedRowHeight = tableView.rowHeight tableView.rowHeight = UITableViewAutomaticDimension self.showNavBar() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } extension HomeTabViewController: UITableViewDataSource, UITableViewDelegate, SwipeTableViewCellDelegate{ //MARK: - UITableViewDataSource Protocol Implementation /***************************************************************/ func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return conversationArray.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { guard let cell = tableView.dequeueReusableCell(withIdentifier: "homeTabCell", for: indexPath) as? ConversationCell else{ fatalError("The dequeued cell is not an instance of homeTabCell.") } //To make the cell Swipeable via SwipeCellKit cell.delegate = self print("CELL_FOR_ROW_AT - indexPath.row = \(indexPath.row) | Conversation.subject = \(conversationArray[indexPath.row].subject)") //Initializing the cell cell.distanceLabel.text = conversationArray[indexPath.row].distance cell.locationLabel.text = conversationArray[indexPath.row].location cell.dateLabel.text = conversationArray[indexPath.row].date cell.subjectLabel.text = conversationArray[indexPath.row].subject cell.bodyLabel.text = conversationArray[indexPath.row].body cell.usernameLabel.text = conversationArray[indexPath.row].username cell.profileImageView.image = conversationArray[indexPath.row].profilePhoto return cell } func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { guard let cell = tableView.dequeueReusableCell(withIdentifier: "homeTabCell", for: indexPath) as? ConversationCell else{ fatalError("The dequeued cell is not an instance of homeTabCell.") } print("DID_SELECT_ROW_AT - Selected Row = \(indexPath.row) | cell.subjectLabel.text = \(cell.subjectLabel.text!)") } I've tried with all the different labels in the custom cell and same result: it always prints out the corresponding default text values of the XIB file. Any idea why (the hell) this is happening? :) Thanks much!
Ben
1

голосов
0

ответ
225

Просмотры

Текст в UITextView в UITableViewCell не отображается

Я пытаюсь связать некоторый текст в текстовом виде в ячейке таблицы пользовательской, но по какой-то причине текст не отображается. У меня есть 2 одинаковых ячеек таблицы, где 1 имеет изображение и текст, а другой только текст. Первые 1 работает без проблем, но при назначении текста на вторую ячейку она не работает. Главная Table View Controller переопределение FUNC Tableview (_ Tableview: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {если пусть imageCheck = tableData [indexPath.row] [ "Image"] {пусть клеток = tableView.dequeueReusableCell (withIdentifier: "imageNotesData" для: indexPath), как! ImageNotesCell cell.notes.text = tableData [indexPath.row] [ "Примечания"] как! Строка охранник пусть imageFirebasePath = tableData [indexPath.row] [ "Image" ] Еще {возвращение клеток} пусть pathReference = Storage.storage () ссылка (withPath: imageFirebasePath как строка). PathReference.getData (MaxSize: 1 * 1614 * 1614) {данные, ошибка в случае пусть ошибка = ошибка {печать (ошибка )} еще {пусть образ = UIImage (данные: данные) cell.storedImage.image = изображение}} возвращение клеток} еще {пусть клеток = tableView.dequeueReusableCell (withIdentifier: "notesData", для: indexPath), как! NotesCell пусть noteString = tableData [indexPath.row] [ "Примечания"], как! Строка печати ( "NS:", noteString) cell.notes.text = tableData [indexPath.row] [ "Примечания"], как! Строка возврата ячейки}} переопределение функ Tableview (_ Tableview: UITableView, didSelectRowAt indexPath: IndexPath) {Print (tableData [indexPath.row] [ "Примечания"])} ImageNotesCell.swift импорт UIKit класс ImageNotesCell: UITableViewCell {@IBOutlet слабый вар storedImage : UIImageView! @IBOutlet слабых Var примечаний: UITextView! } NotesCell.swift импорта UIKit класс NotesCell: UITableViewCell {@IBOutlet слабый вар нота: UITextView! } В Firebase БД мой образец текста «Обычай маскирует высший.» При печати ( «NS:», noteString) работает я получаю NS: Обычай маскирует высший. Когда я нажимаю на строке, чтобы вызвать didSelectRowAt он выводит Факультативно (Обычай маскирует высший.) Я в четыре раза проверить, если я подключен выходы, но я уверен, что я сделал. Не знаю, где, в чем проблема. Высота ячейки представления таблицы для пользовательского класса notesData является статической при 350 для высоты строки
LampPost
1

голосов
2

ответ
426

Просмотры

tableview data not showing up swift

Попытка иметь список из состояния появляются в Tableview, но когда я запускаю его ничего не отображается в Tableview. Все, что еще, кажется, работает. импорт UIKit класс licenseViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {@IBOutlet слабый вар Tableview: UITableView! вар элементы: [String] = [ "Алабама", "Аляска", "Аризона", "Арканзас", "Калифорния", "Колорадо", "Коннектикут", "Делавэр", "Флорида", "Грузия", "Гавайи », "Айдахо", "Иллинойс", "Индиана", "Айова", "Канзас", "Кентукки", "Луизиана", "Мэн", "Мэриленд", "Массачусетс", "Мичиган", "Minnesotea", «Миссисипи», «Миссури», didSelectRowAt indexPath: IndexPath) {} переопределение FUNC viewDidLoad () {super.viewDidLoad () self.tableView.register (UITableViewCell.self, forCellReuseIdentifier: "клетка")} FUNC Tableview (Tableview: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {вар клеток: UITableViewCell = self.tableView.dequeueReusableCell (withIdentifier: "клетка"), как! ? UITableViewCell cell.textLabel .text = self.items [indexPath.row] возврата клеток} Func Tableview (Tableview: UITableView, numberOfRowsInSection раздел: Int) -> Int {возвращение self.items.count; }} forCellReuseIdentifier: "клетка")} функ Tableview (Tableview: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {вар клеток: UITableViewCell = self.tableView.dequeueReusableCell (withIdentifier: "клетка"), как! ? UITableViewCell cell.textLabel .text = self.items [indexPath.row] возврата клеток} Func Tableview (Tableview: UITableView, numberOfRowsInSection раздел: Int) -> Int {возвращение self.items.count; }} forCellReuseIdentifier: "клетка")} функ Tableview (Tableview: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {вар клеток: UITableViewCell = self.tableView.dequeueReusableCell (withIdentifier: "клетка"), как! ? UITableViewCell cell.textLabel .text = self.items [indexPath.row] возврата клеток} Func Tableview (Tableview: UITableView, numberOfRowsInSection раздел: Int) -> Int {возвращение self.items.count; }} строка] возврат клетки} FUNC Tableview (Tableview: UITableView, numberOfRowsInSection раздел: Int) -> Int {возвращение self.items.count; }} строка] возврат клетки} FUNC Tableview (Tableview: UITableView, numberOfRowsInSection раздел: Int) -> Int {возвращение self.items.count; }}
AWith
1

голосов
1

ответ
123

Просмотры

Набор идентификаторов для многократного использования tableViewCell динамически

TableViewCell содержит две метки и содержимое этикетки обновляются на каждой итерации. Для тестирования пользовательского интерфейса, мне нужно установить идентификатор этикетки, чтобы проверить содержание этикетки такие же, как и ожидалось, или нет. Как я могу установить идентификаторы меток внутри многоразовой ячейку динамически? @interface MyDetailsTableViewCell: UITableViewCell @property (слабый, неатомический) IBOutlet UIDLabel * myDetailsTitlelabel; @property (слабый, неатомический) IBOutlet UIDLabel * myDetailsContentLabel; @end Эти две метки внутри моей tableViewCell.
Sagarika Barman
1

голосов
0

ответ
42

Просмотры

UITableView плавающей ячейки После Асинхронный Fetch

Это в том же ключе, что и предыдущий вопрос я здесь в основном, UITableView клетки будут иногда перекрывают данные под ними - я отыскал, что вплоть до reloadRows действующих шаткий с estimatedHeight, и мой решают был кэшировать высоту при вызове willDisplay клетки: а затем вернуть эту высоту, или произвольные постоянный, если строка еще не видели, при вызове heightForRow Но теперь проблема возвращается! Ну, схожий: после того, как пропагандировали UITableView с некоторыми данными, некоторые из них принес асинхронно, я хочу, чтобы иметь возможность искать и заселить UITableView. Эти данные я выборки могут или не могут уже присутствовать на TableView, и в любом случае я не считаю, что - я попал в бэкенд, захватить некоторые вещи, и отобразить его. Кроме этого, он получает шаткий: Как вы можете видеть на скриншоте, там» са клетка накладывается поверх другой ячейки с тем же содержанием. TableView сообщает только там быть 2 строки, с помощью numberOfRows, но вид иерархии говорит, что есть 3 клетки, присутствующие, когда я щелкаю через к TableView. Единственное, что я могу понять, есть какая-то странное состояние гонки или взаимодействие, которое происходит, когда я reloadRow после извлечения данных openGraph. Что дает? Некоторая код: Поиск Поиск fileprivate FUNC (SearchText: String, страница: Int) {postsService.searchPosts (SearchText: SearchText, страница: страница) {[слабые] сами сообщения, ошибка в случае пусть weakSelf = {самостоятельно, если позволяют сообщения = сообщения, ошибка == ноль {если posts.isEmpty {weakSelf.postListController.configureWith! (сообщения: сообщения, deletionDelegate: ноль, forParentView: "Тенденция") weakSelf.page = weakSelf.
Nick Coelius
1

голосов
1

ответ
136

Просмотры

NSFetchedResultsController вопрос: индекс 1 за пределы, управление просмотр ячеек пользовательских таблиц

Я озадачен с реализацией NSFetchedResultsController, как я продолжаю получать ошибки. Я пытаюсь соединить Core Data с UITableView, и я не получаю к следующему шагу, имея UITableView вытягивать правильное количество строк в соответствии с количеством записей из основных данных. Я получаю сообщение об ошибке: *** Нагрузочного приложения из-за неперехваченное исключение «NSRangeException», причина: "*** [__NSSingleObjectArrayI objectAtIndex]: индекс 1 за пределами [0 .. 0] Вот мой код ниже: импорт импорта UIKit CoreData класс CustomerProfileViewController: UITableViewController, NSFetchedResultsControllerDelegate {вар coreDataStack: coreDataStack! вар ITEMLIST: [NSManagedObject] = [] // Я надеюсь, что контроллер получить результаты управления этим объектом // Модель данных содержит один сущности «Пункт» performFetch () печать ( "! Fetch работал 🐺")} поймать пусть ошибку как NSError {печать ( "Не удалось сохранить \ (ошибка), \ (error.userInfo)")} пусть cellNib = UINib (nibName: "SummaryCell" , расслоение: ноль) tableView.register (cellNib, forCellReuseIdentifier: "SummaryCell") пусть cellNib = UINib (nibName: "ListingsCell", расслоение: ноль) tableView.register (cellNib, forCellReuseIdentifier: "ListingsCell")} переопределить функ NumberOfSections (в Tableview: UITableView) -> Int {возвращение 2 // Соответствует пользовательские ячейки просмотра таблицы как Nib файлы} переопределение Func Tableview (_ Tableview: UITableView, titleForHeaderInSection раздел: Int) -> String? {Если раздел == 0 {возвращение «РЕЗЮМЕ» numberOfObjects} еще {вернуть 1}} переопределение Func Tableview (_ Tableview: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {если indexPath.section == 0 {пусть клеток = tableView.dequeueReusableCell (withIdentifier: "SummaryCell", для: indexPath ) как! ? SummaryCell cell.totalNumberOfItems .text = "\ (itemList.count)" вернуть клетку} еще если indexPath.section == 1 {пусть клетка = tableView.dequeueReusableCell (withIdentifier: "ListingsCell", для: indexPath), как! ListingsCell пусть ListItem = fetchResultsControllerItem.object (по адресу: indexPath) cell.itemName .text = ListItem?. )}}) Возвращает контейнер} () функ saveContext () {сторожевых managedContext.hasChanges еще {возвращение} делать {попробуйте managedContext.save ()} поймать пусть ошибку как NSError {Print ( "Нерешенные ошибка \ (ошибка), \ (ошибка .userInfo) ")}}} Я использовать Liya, чтобы подтвердить, что есть товары с именами на записи после изучения SQLITE файла. Для кого возникли какие-либо советы или идеи, я был бы признателен за любую помощь. Благодарю. Для кого возникли какие-либо советы или идеи, я был бы признателен за любую помощь. Благодарю. Для кого возникли какие-либо советы или идеи, я был бы признателен за любую помощь. Благодарю.
William Chiang
1

голосов
2

ответ
1.6k

Просмотры

как сделать нумерацию страниц в табличном представлении в Swift?

Я новичок, я получаю 300 данных с сервера и хранить эти данные в массиве [[String: String]], я не хочу, чтобы все эти 300 данные, отображаемые в виде таблицы сразу, но я хочу, чтобы отобразить она постепенно, скажет 15 данных за свиток в виде таблицы, после того, как загружены 15 данных, следующий 15 будет загружен, если пользователь достигнет нижней части табличной прокрутки. Я должен сделать это, потому что один из данных на самом деле ImagePath, так что я буду загружать изображения, это займет слишком много времени, если загрузить все 300 изображения сразу. Я пытался, но я не могу получить то, что я хочу. Я упростить этот случай, чтобы просто использовать массив целого, как в приведенном ниже коде. не могли бы вы мне помочь, как сделать это? Спасибо заранее :) класса ViewController2: UIViewController {@IBOutlet слабый вар Tableview: UITableView!
Alexa289
1

голосов
0

ответ
28

Просмотры

Tableview скольжение вверх после прокрутки к строке

Эй, ребята, мне нужна ваша помощь, пожалуйста, когда я перезагрузить TableView и вызвать свиток грести функцию нижнего ряда (array.length - 1) в качестве индекса пути, он прокручивает к ней, то она прокручивается на одну строку вверх. Я сделал крутой чат часть мое приложение, и это просто, у меня есть функция, которая захватывает сообщения, и по какой-то причине на моем iPhone симулятор, он делает это странное прокруткой обратно движения. В основном, я надеялся, что один из вас, ребята могли бы помочь мне выяснить, почему он делает это. Это какой-то простой код. Основная функция: функ grabMessages () {если пусть UID = Auth.auth () {CurrentUser .uid, если позволить theirId = {theirUid пусть исх = Database.database () ссылка () ref.child ( "пользователи").?.. ребенок (UID) .child ( "чаты") ребенок (theirId) .child ( "сообщения") наблюдать (.value, с..: {(Снимок) в вар reloadi = ложно, если пусть значения = snapshot.value, как? [String: AnyObject] {для (_, один) значений {если пусть whoSent = один [ "отправитель"] как? String, пусть messagl = один [ "сообщение"], как? String, пусть timerl = один [ "TIMESTAMP"], как? Int, пусть = один манипулятор [ "ключ"] как? Строка {пусть newMess = Message () печать ( "googd") newMess.key = кейер newMess.timeStamp = timerl newMess.messager = messagl newMess.sender = whoSent если self.messages.contains (где: {$ 0.key == newMess , updateChildValues ​​(обновление)}}}, если reloadi == истинно {reloadi = ложь DispatchQueue.main.async {self.tablerView.reloadData () пусть indexPat = IndexPath (строка: 0, раздел: self.messages.count - 1) самостоятельно. tablerView.isHidden = ложь self.tablerView.scrollToRow (по адресу: indexPat, по адресу: .bottom, анимированные: ложь)}}}}, withCancel: ноль)}}} Я буду говорить в моем viewdidload я поставил рамку Tableview, который только CGRect и одинаковый размер по всей платформе, фиксированную ширину и высоту. И на моем iPhone он работает и работает отлично, только на тренажере айфоны сделали это сделать. Вот снимок экрана https://imgur.com/a/ZAhbJ Так что, если вы можете видеть, это показывает другой раздел ниже, но это прокручивается на один над ним. Так что изначально прокручивается к нему, а затем прокручивается назад на один раздел. некоторые другие вещи, онемение участков = messages.count число строк в секции = 1
Spiff
1

голосов
1

ответ
40

Просмотры

Firebase база данных не вытягивать данные в пользовательской ячейке в Tableview

Возникли проблемы с пользовательскими клетки не появляются и не показывает данные из базы данных firebase - не уверен, какой из них проблема, но я только получаю кучу без пользовательских ячеек в Tableview вместо заголовка и описания. Я попытался увидеть данные Бросили печать и ничего появляющегося, то не так с моим кодом? отладчик не показывает ничего особенного. импорт UIKit импорт класс FirebaseDatabase SearchViewController: UIViewController, UISearchBarDelegate {@IBOutlet слабый вар Tableview: UITableView! // часть сообщений нагрузочных сообщения вара = [сообщение] () функ loadPosts () {вар сообщения = [сообщение] () Database.database (). Ссылки (). Ребенок ( "Сообщения"). Соблюдающие (.childAdded) { (снимок: DataSnapshot) в случае пусть Dict = snapshot.value как? [String: Любой] {пусть CaptionText = Dict [ "заголовок"], как! Строка пусть descriptionText = Dict [ "описание"], как! Строка пусть photoUrlString = Dict [ "photoUrl"], как! Строка пусть tagsText = Dict [ "теги"] как! Строка пусть пост = Post (CaptionText: CaptionText, descriptionText: descriptionText, photoUrlString: photoUrlString, tagsText: tagsText) posts.append (пост) печати (self.posts) self.tableView.reloadData ()}}} // часть SearchBar пусть SearchBar = UISearchBar () FUNC searchBarCancelButtonClicked (_ SearchBar: UISearchBar) {searchBar.endEditing (истина)} функ searchBarSearchButtonClicked (_ SearchBar: UISearchBar) {searchBar.endEditing (истина)} переопределение FUNC viewDidLoad () {супер. viewDidLoad () createSearchBar () tableView.dataSource = само tableView.delegate = само loadPosts ()} функ createSearchBar () {searchBar.showsCancelButton = ложь searchBar.placeholder = "Введите здесь" searchBar.delegate = само self.navigationItem.titleView = SearchBar }} // часть Tableview расширения SearchViewController: UITableViewDataSource, UITableViewDelegate {FUNC Tableview (_ Tableview: UITableView, numberOfRowsInSection раздел: Int) -> Int {возвращение posts.count} функ Tableview (_ Tableview: UITableView, cellForRowAt indexPath: indexPath) - > UITableViewCell {пусть клеток = tableView.dequeueReusableCell (withIdentifier: "searchCell", для: indexPath) как! CustomTableViewCell клеток.
Alex. E
1

голосов
1

ответ
68

Просмотры

Autolayout отладочная сборка отличается от сборки выпуска

У меня есть containerview, который содержит UITableView. При отладке построить все выглядит хорошо- Но с выходом строить childviewcontroller появляется inset- Вот раскадровка для containerview- А вот код экземпляра view- self.dailyWeatherTableViewController = [[UIStoryboard storyboardWithName: @ расслоение «Main»: ноль] instantiateViewControllerWithIdentifier: @ "DailyForecastViewController"]; self.dailyWeatherTableViewController.view.frame = self.view.frame; UIEdgeInsets newSafeArea; newSafeArea.top = self.headerView.frame.size.height; если (@available (IOS 11.0, *)) {self.dailyWeatherTableViewController.additionalSafeAreaInsets = newSafeArea; } Еще {// FALLBACK на более ранних версиях} [само addChildViewController: self.dailyWeatherTableViewController]; [Self.forecastContainerView addSubview: самостоятельно. dailyWeatherTableViewController.view]; [Self.dailyWeatherTableViewController didMoveToParentViewController: само]; Отладчик вид иерархии показывает, что UITableviewCellContentView имеет ширину инкапсулированные-макета установлен в 261. Некоторые прибегая к помощи, кажется, показывают, что это связано с autoresizingmask отображения вида, но изменение этого или настройки кадра мнение, в методе cellforindex не исправить. Вот скриншот Tableview constraints-
David
1

голосов
1

ответ
326

Просмотры

Swift Tableview нескольких пользовательских ячейки, inrease количество строки в из клеток приводят к сбою

У меня есть проблема, которую пытаются решить в течение нескольких часов. У меня есть Tableview с несколькими ячейками. Я не использую раскадровку. Моя проблема заключается в следующем: Количество ячеек в Tableview зависит от размера массива. Когда приложение запуска, Tableview и его клетки нагрузки отлично. Даже когда я вставить в ViewDidLoad это: arrayOfCategory.append (Категория (nameOfCategory: "Пример", ColorOfCategory: .white)) tableView.reloadData () работает. Но когда я пытаюсь вставить пустоты в цель @objc Func ручки баттона (отправитель: UIButton) {arrayOfCategory.append (Категория (nameOfCategory: "Sdsdd", ColorOfCategory: .white)) tableView.reloadData ()} мое приложение будет врезаться с ошибкой: TaskList [59513: 1886772] не удалось бросить значение типа 'TaskList.SwitchCell' (0x1073bd808) к 'TaskList.CategoryShowCell' (0x1073bd500). Вот cellForRow: переопределение FUNC Tableview (_ Tableview: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {переключатель indexPath.section {Случай 0: tableView.register (CategoryShowCell.self, forCellReuseIdentifier: categoryShowID) пусть клетка = tableView.dequeueReusableCell (withIdentifier: categoryShowID, для : indexPath), как! CategoryShowCell cell.setCell (категория: (nameOfCategory: "SDSD", ColorOfCategory: .white)) возвращение клеток Случай 1: tableView.register (SwitchCell.self, forCellReuseIdentifier: swichCellID) пусть клеток = tableView.dequeueReusableCell (withIdentifier: swichCellID, для : indexPath), как! SwitchCell возврата ячейки по умолчанию: tableView.register (SwitchCell.self, forCellReuseIdentifier: swichCellID) пусть клетка = Tableview. dequeueReusableCell (withIdentifier: swichCellID для: indexPath), как! SwitchCell возврата клеток}} Кто-нибудь знает, где проблема? Xcode точка в этой линии: пусть клетка = tableView.dequeueReusableCell (withIdentifier: categoryShowID для: indexPath), как! CategoryShowCell в cellForRow буде на одну строку выше я зарегистрировать правильную ячейку.
Angelus
1

голосов
1

ответ
160

Просмотры

Swift - IOS - Создать Newsfeed TableView из нескольких источников данных / Другое TableViewController данных

Я хотел бы создать новостную ленту / временную шкалу TableView стиля, который втягивает в других записях, которые пользователи из различных контроллеров Tableview в моем приложении. Текущая функциональность: Здесь в настоящее время функциональные возможности приложения: пользователи навигации по различным категориям и добавлять элементы списка в TableViews: Tableview Controller Set Up. Необходимые функциональные возможности: То, что я хотел бы сделать, это создать новый TableViewController, объединяющий все эти записи, в соответствии с порядком их временной меткой. Timeline TableViewController, что записи отображаются в должны тянуть в названии входа, что пользователь уже вошел ранее в TableViewCell: Newsfeed / Timeline TableViewController. Код: я могу получить одну категорию приложения (он же один другой TableViewController) кормить в мой взгляд Newsfeed / Timeline, но не несколько источников. Я думаю, что последний бит кода является единственным местом, мне нужно изменить ... Код должен как-то условно определить, какой вид контроллер вход поступает из и назначить соответствующее название на cell.titleLabel.text. Это возможно? Код для настройки источника данных для TableView для Timeline / Newsfeed: переопределение Func NumberOfSections (в Tableview: UITableView) -> Int {вернуться 1} переопределение Func Tableview (_ Tableview: UITableView, numberOfRowsInSection раздел: Int) -> Int {вернуть апельсины. кол + blueberries.count} переопределение FUNC Tableview (_ Tableview: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {пусть cellIdentifier = "TimelineTableViewCell" охранник пусть клетка = tableView.dequeueReusableCell (withIdentifier: cellIdentifier, как: indexPath), как? TimelineTableViewCell еще {FatalError ( «The ячейка из очереди не является экземпляром TimelineTableViewCell.»)} // Получает соответствующий плод для компоновки источника данных. пусть оранжевые = апельсины [indexPath.row] cell.titleLabel.text = orange.orangeName пусть черника = черника [indexPath.row] cell.titleLabel.text = blueberries.blueberries.name возвращение ячейка Обновленный код после реализации наследования (4.11.18) - Table View Controller поставляется пустым: TABLE VIEW CONTROLLER: импорт UIKit импорт os.log класс TimelineTableViewController: UITableViewController {// МАРК: Свойства вар фрукты = [фрукты] () вар fruitList = [String] () переопределение функ viewDidLoad () { super.viewDidLoad ()} переопределение FUNC didReceiveMemoryWarning () {супер. didReceiveMemoryWarning () // Dispose любых ресурсов, которые могут быть воссозданы. } // МАРК: - Таблица представление источника данных переопределение функ NumberOfSections (в Tableview: UITableView) -> Int {1} вернуться переопределение Func Tableview (_ Tableview: UITableView, numberOfRowsInSection раздел: Int) -> Int {возвращение} fruits.count переопределение FUNC Tableview (_ Tableview: UITableView, cellForRowAt indexPath: indexPath) -> UITableViewCell {пусть cellIdentifier = "TimelineTableViewCell" охранник пусть клетка = tableView.dequeueReusableCell (withIdentifier: cellIdentifier для: indexPath), как? TimelineTableViewCell еще {FatalError ( «The ячейка из очереди не является экземпляром TimelineTableViewCell.»)} // Выдает соответствующую запись для компоновки источника данных. пусть фрукты = фрукты [indexPath.row] cell.titleLabel. текст = fruit.name возвращение клеток}} ORANGE КЛАСС: импорт UIKit импорт os.log класса Orange: Fruit {// МАРК: Свойства Имя переопределение вар: String {множество {super.name = ""} получить {возвращение super.name} } размер вар: String вар цвет: String // МАРК: Архивирование Дорожки статические пусть DocumentsDirectory = FileManager () URLs (для: .documentDirectory в: .userDomainMask). .first! Статическая пусть ArchiveURL = DocumentsDirectory.appendingPathComponent ( "фрукты") // МАРК: Типы STRUCT PropertyKey {статический размер ЛПЭ = "размер" статический пусть цвет = "цвет" пусть имя = "имя"} // MARK: Инициализация инициализации? (Название: String, размер: String, цвет: String) {// Инициализировать сохраненные свойства. self.size = размер self.color = цвет super.init (имя: имя)} // МАРК: NSCoding переопределение Func кодирование (с aCoder: NSCoder) {aCoder.encode (размер, forKey: PropertyKey.size) aCoder.encode (цвета, forKey: PropertyKey.color) aCoder.encode (имя, forKey: PropertyKey.name)} требуется удобство инициализации (кодировщик aDecoder: NSCoder) {// имя требуется. Если мы не можем расшифровать строку даты, инициализатор должен потерпеть неудачу. охранник пусть имя = aDecoder.decodeObject (forKey: PropertyKey.name), как? Строка еще {os_log ( «Не удалось расшифровать имя объекта.», Журнал: OSLog.default, тип: .debug) возвращает ноль} // требуется Размер. Если мы не можем расшифровать строку времени, инициализатор должен потерпеть неудачу. охранник пусть размер = aDecoder.decodeObject (forKey: PropertyKey.size), как? «Невозможно определить размер для объекта» Строка еще {os_log (, бревенчатые: OSLog.default, типа: .debug) возвращает ноль} // Требуется цвет. Если мы не можем расшифровать строку имени, инициализатор должен потерпеть неудачу. охранник пусть цвет = aDecoder.decodeObject (forKey: PropertyKey.color), как? Строка еще {os_log ( «Не удалось декодировать цвет объекта.», Журнал: OSLog.default, тип: .debug) обратный ноль} // Должен назвать назначенный инициализатор. self.init (название: название, размер: размер, цвет: цвет)}}
swifty1990
1

голосов
4

ответ
66

Просмотры

Я хочу изменить цвет этикетки в соответствии с текстом в ответ от сервера

Я использую для цикла в CellForRowat Indexpath изменить цвет, но он показывает мне ошибку, как я могу решить. и я поставил правильный ключ Ошибку значения (Согласующую приложение из-за неперехваченное исключение «NSInvalidArgumentException», причина: «- [_ SwiftValue objectForKey]: непризнанный селектор направил к экземпляру 0x6040000f6680» для всех в arrayForType {пусть тип = (все как AnyObject)! .object (forKey: "тип")! как строка печати (типа), если тип == "Отправить" {cell.lblForSend.backgroundColor = UIColor.red} еще {cell.lblForSend.backgroundColor = UIColor.green}}
1

голосов
0

ответ
45

Просмотры

Табличное возвращается только 1 раздел вместо 2. Как решить это?

Я выборки данных из базы данных Realm, и я хочу, чтобы заполнить TableView с 2-х секций: автоботов и десептиконов. Но раздел имущества от TableView возвращается только позицию 0 из массива. Пожалуйста, помогите мне, спасибо. импорт UIKit класса импорта RealmSwift ViewController: UIViewController, UITableViewDataSource {пусть разделы = [ "автоботы", "Десептиконы"] Var autobotsNames: [String] = [] вар decepticonsNames: [String] = [] вар allTransformersNames = [[String]] ( ) переопределение функ viewDidLoad () {super.viewDidLoad () печать (Realm.Configuration.defaultConfiguration.fileURL!) пусть трансформаторы = трансформаторы () пусть transformersData = transformers.TransformersData () для данных в transformersData {если data.group == « " {AutobotsNames.append (data.name)} еще {decepticonsNames.append (data.name)}} allTransformersNames.append (autobotsNames) allTransformersNames.append (decepticonsNames) печати (autobotsNames) печати (decepticonsNames) печати (allTransformersNames)} FUNC numberOfSectionsInTableView ( Tableview: UITableView) -> Int {возвращение sections.count} функ Tableview (_ Tableview: UITableView, titleForHeaderInSection раздел: Int) -> Строка? {Вернуться секции [раздел]} Func Tableview (_ Tableview: UITableView, numberOfRowsInSection раздел: Int) -> Int {возвращающие self.allTransformersNames [раздел] .count} функ Tableview (_ Tableview: UITableView,
Kaio Guanais
1

голосов
0

ответ
222

Просмотры

Несколько регулярного вертикальное tableviews внутри одной горизонтальной CollectionView

Здравствуйте, я пытаюсь отобразить несколько вертикальных представления таблиц внутри одной горизонтального зрения на прошивке. Это возможно? Таблица рассматривает сами должны быть в состоянии прокрутки по вертикали, как нормальный, но я должен также иметь возможность прокрутки по горизонтали между несколькими tableviews, все в том же ViewController (если это возможно). Я приложил изображение того, что он должен выглядеть. Как вы можете видеть, я должен быть в состоянии прокрутить tableviews вертикально, независимо от горизонтальной прокрутки, которая используется для отображения различных tableviews. Все, сохраняя при этом заголовке видимого (Engineering, стипендии и т.д. Какая стратегии должны быть сделано на IOS / Swift, есть учебник? Я в порядке с использованием UICollectionView вместо или любого другого типа зрения. Спасибо так много!
Ben Akin
1

голосов
1

ответ
64

Просмотры

Swift Show Overlapping Button on TableViewCell

I have a button in a TableViewCell the overlaps the welcome TableViewCell. It looks fine when the view loads, however when I scroll down the tableview and scroll back up the button is cut off by the next tableviewcell. I found a hack to make the background clear for the message TableViewCell, however, the bottom of the button is still not clickable. Is there a way to set the priority of the button to be on top of the next? HomeTableViewController.swift override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { switch indexPath.section { case 0: let cell = tableView.dequeueReusableCell(withIdentifier: "heroCell", for: indexPath) as! HeroTableViewCell heroCell = cell cell.separatorInset = UIEdgeInsets(top: 0, left: 10000, bottom: 0, right: 0) return cell case 1: let cell = tableView.dequeueReusableCell(withIdentifier: "welcomeCell", for: indexPath) as! WelcomeTableViewCell // Set Intro Name if let user = Auth.auth().currentUser { // User is signed in // References to firebase let userFS = Firestore.firestore().collection("users") // Set the navigation title to users name userFS.document(user.uid).getDocument { (document, error) in if let userInfo = document { let firstName = userInfo["firstName"] as! String cell.introLabel.text = "Hey, \(firstName)" } else { print("User name does not exist") } } } return cell case 2: let cell = tableView.dequeueReusableCell(withIdentifier: "tripsCell", for: indexPath) as! TripTableViewCell return cell case 3: let cell = tableView.dequeueReusableCell(withIdentifier: "suggestionsCell", for: indexPath) as! SuggestionTableViewCell return cell default: let cell = tableView.dequeueReusableCell(withIdentifier: "popularsCell", for: indexPath) as! PopularTableViewCell return cell } } override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { switch indexPath.section { case 0: return 425 case 1: return 200 case 2: return 400 case 3: return 400 default: return 400 } } override func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { return 425 } HeroTableViewCell.swift class HeroTableViewCell: UITableViewCell { // MARK: - Outlets @IBOutlet weak var heroImage: UIImageView! @IBOutlet weak var heroImageViewTopConstraint: NSLayoutConstraint! @IBOutlet weak var planTripButton: SpringButton! // MARK: - Variables let notification = UINotificationFeedbackGenerator() override func awakeFromNib() { } // MARK: - Actions @IBAction func addTripButtonPressed(_ sender: UIButton) { planTripButton.animation = "pop" planTripButton.animate() notification.notificationOccurred(.success) } }
pmanning
1

голосов
0

ответ
110

Просмотры

Swift изменение темы не работает на UILabel в UITableViewCell

Я работаю на предоставление свет / темный вариант темы для пользователей в приложение IOS. Когда я поставил тему в приложении делегата, приложение загружает штраф с соответствующей темой, но когда я переключить переключатель в настройках, чтобы изменить тему, она не работает должным образом. Основная проблема с UILabel.textColor в UITableViewCell. Я попытался ниже основан на том, что я прочитал в Интернете, но он не работает. UILabel.appearance (whenContainedInInstancesOf: [UITableViewCell.self]). TextColor = UIColor.red Я использую Xcode 9.3. Любой совет будет принят во внимание. Спасибо.
Rijaz Ali
1

голосов
1

ответ
44

Просмотры

Добавление пользовательских UIView вложенной ниже UITableViewCell

Я добавляю expandale / разборный UIView ниже UITableViewCell. Я могу добавить и скрыть вид на кнопку действия, но не может удалить его, когда вид показан в другой ячейке. Я обновляя вид ограничение высоты 0 на прячась. Вот мой код: - (Недействительными) doneButtonClicked: (UIButton *) отправитель {CGPoint buttonPosition = [Отправитель convertPoint: CGPointZero toView: _tableView]; NSIndexPath * indexPath = [_tableView indexPathForRowAtPoint: buttonPosition]; CustomCell * ячейки = [_tableView cellForRowAtIndexPath: indexPath]; для (INT I = 0; я <[число _expandedIndexPaths]; я ++) {если (я = indexPath.row && [число _expandedIndexPaths]!> 0) {[self.expandedIndexPaths removeObject: indexPath]; // эффект анимации для расширения / коллапса вида [клеток animateClosed]; }} Если (sender.tag == 0) {[self.expandedIndexPaths AddObject: indexPath]; [Клеток animateOpen]; //[self.expandedIndexPaths removeObject: indexPath]; } Еще {[self.expandedIndexPaths removeObject: indexPath]; [Клеток animateClosed]; } [_TableView reloadRowsAtIndexPaths: [NSArray arrayWithObject: indexPath] withRowAnimation: UITableViewRowAnimationAutomatic]; }
Bmacin
1

голосов
2

ответ
67

Просмотры

Swift, Identing Таблица Views каждая строка получает более отступом

Как это выглядит, как я пытаюсь сделать так, чтобы каждое имя из символов сдвигает все больше и больше с каждой строкой так слева, то следующая строка идет немного вправо, а затем следующий ряд идет немного правее. Я просто не могу понять, почему я не могу отступа моим лейблы один за другим. Любая помощь приветствуется. Класс ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {вар гномы = [ "Сонный", "Sneezy", "Застенчивый", "вялый", "Сердитый", "Док", "Счастливый", "Sad"] вар imagess = [» Сонный», "Sneezy", "Застенчивый", "вялый", "Сердитый", "Док", "Счастливый", "Сад"] Func Tableview (_ Tableview: UITableView, numberOfRowsInSection раздел: Int) -> Int {вернуться Dwarves.count} Func Tableview (_ Tableview: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {100} вернуться Func Tableview (_ Tableview: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {пусть клетка = tableView.dequeueReusableCell (withIdentifier: "customCell"), как! CustomTableViewCell cell.CellView.layer.cornerRadius = cell.CellView.frame.height / 2 cell.Label.text = Дварфы [indexPath.row] cell.CharcterImage.image = UIImage (названный: imagess [indexPath.row]) cell.CharcterImage .layer.cornerRadius = cell.CharcterImage.frame.height / 2 возврата клеток} FUNC Tableview (_ Tableview: UITableView, indentationLevelForRowAt indexPath:. indexPath) -> Int {}} Я пытался использовать indentationLevelforRowAt, но это не похоже на работу. импорт UIKit класс CustomTableViewCell: UITableViewCell {@IBOutlet слабый вар CellView: UIView! @IBOutlet слабого уага CharcterImage: UIImageView! @IBOutlet слабого уага Этикетки: UILabel! @IBOutlet слабого уага TableView: UITableView! переопределить FUNC awakeFromNib () {super.awakeFromNib () // Инициализация коды} переопределения FUNC setSelected (_ выбрано: Bool, анимированное: Bool) {super.setSelected (выбрано, анимированный: анимированный) // Настройка вида для выбранного состояния} }
Phillip Yates
1

голосов
2

ответ
471

Просмотры

Swift 4, хранение и отображение данных с использованием массива и TableViewCell

Я делаю приложение, которое позволяет пользователю следить за порядком на имена пользователей и пароли. В настоящее время я имею проблему, когда пользователь выйти из приложения, данные или TableViewCell не сохраняется или появляется. Я использую массив. Я предполагаю, потому что данные не получают хранятся после. Является ли CoreData или UserDefaults простое решение для этого? Я хочу, чтобы избежать Firebase. Может кто-то объяснить или показать, как реализовать CoreData / UserDefaults в код? Я искал много, но я просто найти его трудно понять, как применить его в своем коде, особенно с массивами и TableViewCell. Помощь глубоко признателен. Изображения ниже. Вот мой код: MainViewController: класс MainViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {@IBOutlet слабый вар Tableview: UITableView? переопределить Func viewDidLoad () {супер. viewDidLoad () // Есть ли какие-либо дополнительные настройки после загрузки представления. } Переопределение FUNC didReceiveMemoryWarning () {super.didReceiveMemoryWarning () // Утилизация любых ресурсов, которые могут быть воссозданы. } Функ Tableview (_ Tableview: UITableView, numberOfRowsInSection раздел: Int) -> Int {возвращение informasjoner.count} функ Tableview (_ Tableview: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {пусть клетка = tableView.dequeueReusableCell (withIdentifier: " InformasjonTableViewCell "), как! InformasjonTableViewCell пусть информация С: = informasjoner информация С [indexPath.row]; если (informasjon.image = ноль!) {cell.imageViewInfo .image = informasjon.image?} еще {cell.imageViewInfo .image = UIImage? (названный: informasjon.imageName)} cell.epostLabel .text = информация С?. ? LabelEpost cell.passordLabel .text = informasjon.labelPassord cell.applikasjonLabel .text = informasjon.labelApplikasjon возврата ячейки} // EDIT / ОБНОВЛЕНИЕ КЛЕТОК FUNC Tableview (_ Tableview: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {Пусть = informasjoner информация С [indexPath.row] пусть DeleteAction = UITableViewRowAction (стиль: .DEFAULT, название: "Удалить") {(действие, indexPath) в self.deleteAction (информация С: информация С, indexPath: indexPath)} // вызываем удалить действие deleteAction.backgroundColor = .red; вернуться [DeleteAction]} частный Func DeleteAction (информация С: информация С, indexPath: IndexPath) {пусть предупреждение = UIAlertController (название: "Удалить", сообщение: "Есть у" уверены, preferredStyle: .alert) пусть DeleteAction = UIAlertAction (название: "Да", стиль: .default) {(действие) в informasjoner.remove (в: indexPath.row) self.tableView .deleteRows (по адресу: [indexPath], с : .automatic)} пусть cancelAction = UIAlertAction (название: "Нет", стиль: .default, обработчик: ноль); alert.addAction (DeleteAction); alert.addAction (cancelAction); Настоящее (предупреждение, анимированные: истина); }} InformasjonTableViewCell: импорт UIKit класс InformasjonTableViewCell: UITableViewCell {@IBOutlet слабый вар imageViewInfo: UIImageView? @IBOutlet слабого уага epostLabel: UILabel? @IBOutlet слабого уага passordLabel: UILabel? @IBOutlet слабого уага applikasjonLabel: UILabel! переопределить функ awakeFromNib () {super.awakeFromNib () // Инициализация коды} переопределения функа setSelected (_ выбрано: Bool, анимированный: Bool) {super.setSelected (выбирается, анимированный: анимированный)}} AddInfoVC: Класс импорта UIKit AddInfoVC: UIViewController , UITextFieldDelegate, UINavigationControllerDelegate, UIImagePickerControllerDelegate {@IBOutlet слабый вар txtEpost: UITextField? @IBOutlet слабого уага ImageInfo: UIImageView? @IBOutlet слабого уага txtPassord: UITextField? @IBOutlet слабого уага txtApplikasjon: UITextField! вар newInfo = информация С () @IBAction функ btnSave (отправитель: UIButton)? {печать ( "! Нажмите Сохранить"), если (newInfo.image == ноль || newInfo.labelEpost .count == 0 || newInfo.labelPassord ?. кол == 0 || newInfo.labelApplikasjon .count == 0) {пусть alertController = UIAlertController (название: "Предупреждение", сообщение: "Пожалуйста, установите", preferredStyle: .alert) пусть okAction = UIAlertAction (название: "OK", стиль: .default) {(действие) в} alertController.addAction (okAction) self.present (alertController, анимированные: истинное, завершение: ноль); } Еще {informasjoner.append (newInfo); ? NavigationController .popViewController (анимированный: правда) пусть mainViewController = self.navigationController .topViewController, как? MainViewController mainViewController .tableView .reloadData)}} переопределение FUNC viewDidLoad () {super.viewDidLoad () // Нажмите, чтобы позволить ImageView tapGestureToImageView = UITapGestureRecognizer (цель (:? Само, действие: #selector (tapToImageView (отправитель :))) tapGestureToImageView .numberOfTapsRequired = 1 ImageInfo .isUserInteractionEnabled = TRUE; ImageInfo ?. addGestureRecognizer (tapGestureToImageView); ? Self.txtEpost .delegate = я; ? Self.txtPassord .delegate = я; ? Self.txtApplikasjon .delegate = я; } Модели Informasjon.swift: Фонд импорт импорт UIKit класс {уаг информация С ImageName: String? вар изображение: UIImage? вар labelEpost: String? вар labelPassord: String? вар labelApplikasjon: String? удобство инициализации (ImageName: String, labelEpost: String, labelPassord: String, labelApplikasjon: String) {self.init () self.imageName = ImageName self.labelEpost = labelEpost self.labelPassord = labelPassord self.labelApplikasjon = labelApplikasjon}} Изображение 1 - > Как выглядит приложение из раскадровки. Изображение 2 -> Как выглядит приложение из Simulator. делегируют = я; ? Self.txtApplikasjon .delegate = я; } Модели Informasjon.swift: Фонд импорт импорт UIKit класс {уаг информация С ImageName: String? вар изображение: UIImage? вар labelEpost: String? вар labelPassord: String? вар labelApplikasjon: String? удобство инициализации (ImageName: String, labelEpost: String, labelPassord: String, labelApplikasjon: String) {self.init () self.imageName = ImageName self.labelEpost = labelEpost self.labelPassord = labelPassord self.labelApplikasjon = labelApplikasjon}} Изображение 1 - > Как выглядит приложение из раскадровки. Изображение 2 -> Как выглядит приложение из Simulator. делегируют = я; ? Self.txtApplikasjon .delegate = я; } Модели Informasjon.swift: Фонд импорт импорт UIKit класс {уаг информация С ImageName: String? вар изображение: UIImage? вар labelEpost: String? вар labelPassord: String? вар labelApplikasjon: String? удобство инициализации (ImageName: String, labelEpost: String, labelPassord: String, labelApplikasjon: String) {self.init () self.imageName = ImageName self.labelEpost = labelEpost self.labelPassord = labelPassord self.labelApplikasjon = labelApplikasjon}} Изображение 1 - > Как выглядит приложение из раскадровки. Изображение 2 -> Как выглядит приложение из Simulator. Строка? вар labelPassord: String? вар labelApplikasjon: String? удобство инициализации (ImageName: String, labelEpost: String, labelPassord: String, labelApplikasjon: String) {self.init () self.imageName = ImageName self.labelEpost = labelEpost self.labelPassord = labelPassord self.labelApplikasjon = labelApplikasjon}} Изображение 1 - > Как выглядит приложение из раскадровки. Изображение 2 -> Как выглядит приложение из Simulator. Строка? вар labelPassord: String? вар labelApplikasjon: String? удобство инициализации (ImageName: String, labelEpost: String, labelPassord: String, labelApplikasjon: String) {self.init () self.imageName = ImageName self.labelEpost = labelEpost self.labelPassord = labelPassord self.labelApplikasjon = labelApplikasjon}} Изображение 1 - > Как выглядит приложение из раскадровки. Изображение 2 -> Как выглядит приложение из Simulator.
Markus Sten
1

голосов
1

ответ
187

Просмотры

Скрытие и отображение UITableView с горкой вниз и скользить вверх анимации

можно ли поставить анимацию UITableView? Сейчас у меня это: - (IBAction) mPesoAccount: (идентификатор) отправителя {если (accountBalanceTableView.isHidden) {accountBalanceTableView.hidden = NO; } Еще {accountBalanceTableView.hidden = ДА; }} Скрывает или показать UITableView всякий раз, когда я нажимаю кнопку, я хотел бы добавить анимацию, когда я прячусь и показывая UITableView это было похоже, как ниспадающего пункта, где он скользит вверх в кнопку и коллапсирует вниз, когда кнопку еще раз щелкнул.
1

голосов
1

ответ
42

Просмотры

Search bar for structured data Swift 4

I'm quite new to swift... I have a data model class like this: class PostDataModel: NSObject { var postID : Int = 0 var postTitle : String = "" var postExcerpt : String = "" var postContent : String = "" var postThumbnailURL : String = "" var postUpdated : String = "" var postLink : String = "" var postSlug : String = "" } and I need to search in the postTitle the text edited in the search bar present in a view controller: //MARK: - Search bar methods inside the view controller extension ViewController: UISearchBarDelegate { func searchBarSearchButtonClicked(_ searchBar: UISearchBar) { print(searchBar.text!) shouldShowSearchResults = true filteredTableData = postsArray.filter({$0.postTitle == searchBar.text}) tablePosts.reloadData() } func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) { if searchBar.text == nil || searchBar.text == "" { shouldShowSearchResults = false view.endEditing(true) tablePosts.reloadData() } else { shouldShowSearchResults = true filteredTableData = postsArray.filter({(item) -> Bool in var stringMatch = item.postTitle.lowercased().range(of: searchBar.text!) return stringMatch != nil ? true : false }) tablePosts.reloadData() } } } Searching around I found solutions when there is only text to seek in a String, but how can I filter an array of PostDataModel according to the text contained in the title? Thanks a lot.
papesky
1

голосов
1

ответ
23

Просмотры

Приложить / Придерживайтесь UIButton под UITableView

Эта иллюстрация показывает, что я пытаюсь сделать: Зеленый список является UITableView, где она динамически регулировать его высоту в зависимости от количества элементов внутри него. Под от UITableView кнопка, которая должна следовать UITableView всякий раз, когда он изменяет его размер высота. UIButton всегда должен быть под UITableView независимо от размера UITableView. Я в настоящее время использую для автоматического изменения UITableView Я пытался использовать Autolayout, но, кажется, я все еще не могу найти ответ. я в настоящее время не имеют никаких ограничений в макете.
1

голосов
1

ответ
46

Просмотры

Строка накладываются друг на друга на дисплее в UITableView

Проверьте здесь на картинку я добавил вид изображения и добавленные изображения в виде таблицы, но дисплей перекрывается при запуске приложения. Это показывает изображение на другое изображение, когда вы пытаетесь прокрутки вниз таблицы. Как это исправить? Вот код. Таким образом, есть массив, который отображает заголовок и подзаголовок Банкоматы и для каждого экземпляра заголовка, я попытался отобразить изображение, представляющее его. Но дисплей начинает перекрывания фотографии друг на друга. переопределение FUNC Tableview (_ Tableview: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {пусть клетка = tableView.dequeueReusableCell (withIdentifier: "atmCell", для: indexPath) переменная строка = 0; ??? Cell.textLabel .text = AtmList.instance.atms [indexPath.row] .title cell.textLabel .textColor = UIColor.black cell.textLabel .font = UIFont.systemFont (ofSize: ? 13) cell.detailTextLabel .text = AtmList.instance.atms [indexPath.row] .subtitle пусть cellImage: UIImageView! cellImage = UIImageView (рама: CGRect (х: 290, у: 39, ширина: 70, высота: 70)) cellImage.layer.cornerRadius = 20 cellImage.layer.masksToBounds = истина cellImage.contentMode = .scaleToFill cellImage.layer.masksToBounds = истина // cellImage.image // пусть imgName = "Значок \ ((Банкоматы [indexPath.row], как AnyObject) .object (forKey: "название"!) в качестве строки)", если cell.textLabel .text [(?! cell.textLabel .text .startIndex)] == "W" {cellImage.image = UIImage (назван: "wemaBank_pin")}?!?!? еще если cell.textLabel .text [(cell.textLabel .text ?. STARTINDEX)] == "A" {cellImage.image = UIImage (назван: "AccessBank_pin")}!?! еще, если cell.textLabel .text [(ячейка. TextLabel .text .startIndex)] == "C" {cellImage.image = UIImage (назван: "CitiBank_pin")}?!?!? еще если cell.textLabel .text [(cell.textLabel .text .startIndex) ] == "D" {cellImage.image = UIImage (назван: "DiamondBank_pin")} еще если cell.textLabel .text [(cell.textLabel .text .startIndex?)] == "H" {?! cellImage.image = UIImage (назван: "HeritageBank_Pin")} еще если cell.textLabel .text [(cell.textLabel .text .startIndex?)] == "P" {cellImage.image = UIImage (названный?!: "ProvidusBank_pin")} еще если (cell.textLabel? .text! [(cell.textLabel? .text? .startIndex)])! == "F" && (cell.textLabel .text [(cell.textLabel .text .index ((cell.textLabel .text .startIndex) !, offsetBy:!? 2))]?!)! == "D", {cellImage. Изображение = UIImage (назван: "FidelityBank_pin") (? cell.textLabel .text [(cell.textLabel .text .startIndex)?!]!)} еще если! == "F" && (cell.textLabel .text [(cell.textLabel .text .index (после того, как:?!? (Cell.textLabel .text .startIndex)))!]?!)! == "C" {cellImage.image = UIImage (назван: "FCMB_pin")} еще если (? Cell.textLabel .text [(cell.textLabel .text .startIndex)?!]!)! == "F" && (cell.textLabel .text [(cell.textLabel .text .index ((cell.textLabel .text .startIndex) !, offsetBy:!? 5))]?!)! == "C" {cellImage.image = UIImage (назван: "FCMB_pin")} еще если (? Cell.textLabel .text [(cell.textLabel .text .startIndex)?!]!)! == "U" && (cell.textLabel .text [(cell.textLabel .text .index ((cell.textLabel .text .startIndex) !, offsetBy:?!?! 3!))]?!)! == " )} Еще если cell.textLabel? .Text! [(Cell.textLabel? .Text? .StartIndex)] == "S" && (cell.textLabel? .Text! [(Cell.textLabel? .Text! .Index (? (cell.textLabel .text .startIndex) !, offsetBy: 2))])! == "у" {cellImage.image = UIImage (назван: "skyeBank_pin")}?! [! (? Cell.textLabel .text .startIndex)] еще если cell.textLabel .text == "Е" {cellImage. изображение = UIImage (назван: "ecoBank_pin")} еще если cell.textLabel .text [(cell.textLabel .text .startIndex?)] == "Z" {cellImage.image = UIImage (названный:! «ZenithBank_pin «)} еще если (cell.textLabel? .text! [(cell.textLabel? .text? .startIndex)])! == "U" && (cell.textLabel .text [(cell.textLabel .text .index (после того, как:?!? (Cell.textLabel .text .startIndex)))!]?!)! == "б" {cellImage. Изображение = UIImage (назван: "UBA_pin")?!?!} еще если cell.textLabel .text [! (? cell.textLabel .text .startIndex)] == "U" && (cell.textLabel .text [( ?! cell.textLabel .text .index ((cell.textLabel .text .startIndex) !, offsetBy:! 4))])! == "у" {cellImage.image = UIImage (назван: "UnityBank_pin")} еще если cell.textLabel .text [(cell.textLabel .text .startIndex?)] == "S" && (клетка?! .textLabel .text [(cell.textLabel .text .index ((cell.textLabel .text .startIndex) !, offsetBy:?!?! 4!))]?!)! == "Ъ" {cellImage.image = UIImage (назван: "StanbicIBTC_pin")} еще если cell.textLabel .text [(cell.textLabel .text .startIndex?)] == "S" && (клетка?! .textLabel .text [(cell.textLabel .text .index ((cell.textLabel .text .startIndex) !, offsetBy:?!?! 4!))]?!)! == " STARTINDEX) !, offsetBy: 4))])! == "е" {cellImage.image = UIImage (назван: "UBA_pin")} cell.addSubview (cellImage) возвращение клеток}
Naza
1

голосов
1

ответ
49

Просмотры

Pulling Data from JSON Array to make 3 different Arrays

I'm trying to make three arrays based on the JSON Data that I'm pulling from my restaurant. I want to have an array of Entre, Main, & Dessert that will display in a tableView Object. This is the code I'm using to pull in data: func loadMeals() { Helpers.showActivityIndicator(activityIndicator, view) if let restaurantId = restaurant?.id { APIManager.shared.getMeals(restaurantId: restaurantId, completionHandler: { (json) in if json != nil { self.meals = [] if let tempMeals = json["meals"].array { for item in tempMeals { let meal = Meal(json: item) self.meals.append(meal) } self.tableView.reloadData() Helpers.hideActivityIndicator(self.activityIndicator) } } }) } } Item prints out: items { "name" : "Spinach Artichoke", "course" : "entres", "short_description" : "savory", "id" : 20, "image" : "http:\/\/localhost:8000\/media\/product_images\/artichoke.jpg", "usage" : "homestyle", "sizes" : [ { "size" : 3, "id" : 24, "product_id" : 20, "price" : 55.899999999999999 }, { "size" : 4, "id" : 25, "product_id" : 20, "price" : 78 }, { "size" : 5, "id" : 26, "product_id" : 20, "price" : 125 } ] } items { "name" : "Pizza", "course" : "main", "short_description" : "Melty cheese", "id" : 19, "image" : "http:\/\/localhost:8000\/media\/product_images\/pizza.jpg", "usage" : "top", "sizes" : [ { "size" : 6, "id" : 23, "product_id" : 19, "price" : 75.989999999999995 } ] } items { "name" : "Chocolate Mousee Devil's cake", "course" : "dessert", "short_description" : "Sweet And Smooth", "id" : 18, "image" : "http:\/\/localhost:8000\/media\/product_images\/Devils_cake.jpg", "usage" : "sweets", "sizes" : [ { "size" : 2, "id" : 20, "product_id" : 18, "price" : 50 }, { "size" : 3, "id" : 21, "product_id" : 18, "price" : 120 }, { "size" : 4, "id" : 22, "product_id" : 18, "price" : 376 } ] } I'm trying to figure out how to create the arrays by pulling the data from this function. Any help would be appreciated.
A True Novice
1

голосов
2

ответ
62

Просмотры

How can I categorize my TODOs?

У меня есть два ViewControllers в первом я создал Tableview, где я могу вставить только текст в ячейку. В SecondViewController У меня также есть Tableview с той же функцией, бушель Как я могу это сделать, что, когда я нажимаю ячейку в первом Tableview, я могу попасть в отдельный SecondTableView (массив). Так что я далеко, но я думаю, что функция Categorize должна быть в didSelectRowAt, когда я нажимаю на строку. FirstViewController: Todos: Это строка Array (Я хочу, чтобы это как категории) замещает FUNC подготовка (для Segue: UIStoryboardSegue, отправитель: Любое?) {Если segue.identifier == "HHH" {// пусть назначение = segue.destination как? UINavigationController пусть Vc = segue.destination как? SecondViewController}} функ Tableview (_ Tableview: UITableView, didSelectRowAt indexPath: IndexPath) {пусть Vc = раскадровки ?. instantiateViewController (withIdentifier: "SecondViewController"), как? ? SecondViewController // метка имя .name = VC Todos [indexPath.row] self.present (Vc !, анимированный: правда, завершение: ноль) tableView.deselectRow (по адресу: indexPath, анимированные: правда) self.performSegue (withIdentifier: " HHH», отправитель: indexPath) пусть indexpath = Todos [indexPath.row] печать ( "indexpath: \ (indexpath)") печать ( "строка: \ (indexPath.row)")}} В SecondViewController у меня SecondArray = [String] () это на самом деле Todos. На обоих ViewControllers я могу вставить ячейку с текстом, но не знаю, как передать данные обратно: =? правда, завершение: ноль) tableView.deselectRow (по адресу: indexPath, анимированные: правда) self.performSegue (withIdentifier: "HHH", отправитель: indexPath) пусть indexpath = Todos [indexPath.row] печать ( "indexpath: \ (indexpath) ") печать (" строка: \ (indexPath.row) ")}} В SecondViewController у меня есть SecondArray = [String] () это на самом деле Todos. На обоих ViewControllers я могу вставить ячейку с текстом, но не знаю, как передать данные обратно: =? правда, завершение: ноль) tableView.deselectRow (по адресу: indexPath, анимированные: правда) self.performSegue (withIdentifier: "HHH", отправитель: indexPath) пусть indexpath = Todos [indexPath.row] печать ( "indexpath: \ (indexpath) ") печать (" строка: \ (indexPath.row) ")}} В SecondViewController у меня есть SecondArray = [String] () это на самом деле Todos. На обоих ViewControllers я могу вставить ячейку с текстом, но не знаю, как передать данные обратно: =? )}} В SecondViewController У меня есть SecondArray = [String] () это на самом деле в Todos. На обоих ViewControllers я могу вставить ячейку с текстом, но не знаю, как передать данные обратно: =? )}} В SecondViewController У меня есть SecondArray = [String] () это на самом деле в Todos. На обоих ViewControllers я могу вставить ячейку с текстом, но не знаю, как передать данные обратно: =?
Sam
1

голосов
2

ответ
61

Просмотры

Свернуть / развернуть конкретную ячейку в UITableView

Я в настоящее время есть 2 категории (кошки, собаки) в 1 UITableView. Это иллюстрация: кнопка собаки Кошки и является частью UITableView они находятся в разделе заголовка. они выступают в качестве разделителя для обеих категорий. то, что я пытаюсь добиться, когда я нажимаю кнопку кошки, список под кнопкой кошки должен разрушаться и кнопка собаки должна повторно - отрегулировать его положение. Когда я снова нажмите кнопку кошки, список должен расширяться. то, что я в настоящее время является: NSUInteger индексы = (неподписанных долго) filteredList.count; для (INT I = 0; я
1

голосов
1

ответ
52

Просмотры

Курсор исчезая При переходе на новую строку в UITextView вложенной в UITableViewCell

У меня есть UITextView встроенный в UITableViewCell. Вызов reloadTableView () при обновлении на UITextView добивается своего UITableViewCell автоматически подгоняя когда UITextView становится слишком большим или слишком маленьким. Проблема заключается в том, когда переход к новой линии, создавая слово слишком большой для предыдущей строки или нажимной возврата, курсор не сразу появится. Вместо того, чтобы курсор исчезнет, ​​а символ или слово, которое должно быть на новой линии не может рассматриваться, пока дополнительный символ не добавляется, после чего он появляется, как это должно быть. Вы можете увидеть проблему в ссылке GIF на giphy: рисунок проблемы Стоит отметить, что это происходит только в самом низу UITextView. Если есть существующий два пункта появляются, как правило, и я решаю, чтобы войти в пункте в период между двумя существующими, исчезающая проблема курсора не появляется. Я включил ниже код и я озадачен относительно того, что является причиной этой проблемы. импорт Фонд импорта UIKit импорта CoreData класс textViewTableViewCell: UITableViewCell, UITextViewDelegate {//https://stackoverflow.com/questions/15711645/how-to-get-uitableview-from-uitableviewcell вар Tableview: UITableView? {Вар вид = self.superview в то время как (смотреть = ноль && зрения .isKind (из:! UITableView.self) == ложь) {вид = вид .superview} возвратного зрения как!? UITableView} общественный вар Текст_ячейки: String = "" вар peopleArray: [NSManagedObject] = [] @IBOutlet слабый вар TextView: UITextView! переопределение функ layoutSubviews () {textView.delegate = само //textView.text = Текст_ячейки} FUNC textViewDidChange (_ TextView: UITextView) {сохранить ()} функ сохранить () {пусть смещение = textView.contentOffset охранник пусть AppDelegate = UIApplication.shared.delegate, как? AppDelegate еще {возвращение} // 1 пусть managedContext = appDelegate.persistentContainer.viewContext // 2 пусть объект = NSEntityDescription.entity (forEntityName: "Человек", в: managedContext)! пусть человек = NSManagedObject (объект: объект, insertInto: managedContext) //2.5 пусть предикат = NSPredicate (формат: "название ==% @", Текст_ячейка) пусть fetchRequest = NSFetchRequest (EntityName: "Человек") fetchRequest.predicate = предикат делать {пусть fetchedEntities = попробовать managedContext. выборки (fetchRequest), как! [Человек] fetchedEntities.first? .Name = textView.text Текст_ячейка = textView.text} уловы {// Сделать что-то в ответ на ошибку условия} {делать попробуйте managedContext.save () Tableview? .BeginUpdates () Tableview? .EndUpdates ( )} поймать {// Сделать что-то в ответ на ошибку условие}}} класс JournalEntryDetailViewController: UITableViewController, UITextViewDelegate {общественный вар hasViewAppeared: Bool = ложный текст общественного вар: String = "" вар люди: [NSManagedObject] = [] // @ IBOutlet слабого уага Tableview: UITableView! переопределение FUNC viewDidLoad () {tableView.estimatedRowHeight = 500 tableView.rowHeight = UITableViewAutomaticDimension супер. viewDidLoad ()} переопределение функ Tableview (_ Tableview: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {вернуться UITableViewAutomaticDimension} переопределение функ viewWillAppear (_ анимированный: Bool) {// когда вид записи журнала собирается появиться, мы не делаем хотите IOS 10 добавили большое заголовки //https://chariotsolutions.com/blog/post/large-titles-ios-11/ self.navigationController .navigationBar.prefersLargeTitles = False} переопределение функ viewDidAppear (_ анимированный: Bool)? { hasViewAppeared = истинные tableView.reloadData () //tableView.beginUpdates () //tableView.endUpdates ()} Override FUNC подготовки (для Segue: UIStoryboardSegue, отправитель: Любые?) {если segue.destination является ViewController {пусть = VC Segue. назначения, как? ViewController ?. ВК removeBlanks () VC .tableView.reloadData ()}} переопределение функ Tableview (_ Tableview: UITableView, numberOfRowsInSection раздел: Int) -> Int {1} вернуться переопределение Func Tableview (_ Tableview: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {пусть клеток: textViewTableViewCell = tableView.dequeueReusableCell (withIdentifier: "textCell", для: indexPath) как! textViewTableViewCell cell.cellText = текст cell.textView.text = текст cell.peopleArray = люди возвращаются ячейки}} cellForRowAt indexPath: IndexPath) -> UITableViewCell {пусть клеток: textViewTableViewCell = tableView.dequeueReusableCell (withIdentifier: "textCell", для: indexPath), как! textViewTableViewCell cell.cellText = текст cell.textView.text = текст cell.peopleArray = люди возвращаются ячейки}} cellForRowAt indexPath: IndexPath) -> UITableViewCell {пусть клеток: textViewTableViewCell = tableView.dequeueReusableCell (withIdentifier: "textCell", для: indexPath), как! textViewTableViewCell cell.cellText = текст cell.textView.text = текст cell.peopleArray = люди возвращаются ячейки}}
1

голосов
0

ответ
142

Просмотры

How to make expandable UITableViewCell with UIStackView

У меня была проблема с созданием разворачивающиеся клеток. Я использовать UIStackView. Проблема заключается в том, что, когда минимизируется клетка, нижний вид скачет сверху и получается некрасивая анимация. вот мои методы переопределения Func Tableview (_ Tableview: UITableView, didSelectRowAt indexPath: IndexPath) {Print ( "кран") self.tableView.beginUpdates () пусть клетка = tableView.cellForRow (по адресу: indexPath), как! TableViewCell cell.animate (продолжительность: 0, с: {cell.stufView.layoutIfNeeded) (}) self.tableView.endUpdates ()} и метод клеток живой FUNC одушевленные (продолжительность: Двойной, с: @escaping () -> Пустота) {UIView.animateKeyframes (withDuration: продолжительность, задержки: 0, опции: .calculationModePaced, анимация: {UIView.addKeyframe (withRelativeStartTime: 0, relativeDuration: продолжительность, анимация:
Manki
1

голосов
1

ответ
299

Просмотры

Swift - Большой титул и SearchBar

Я пытаюсь использовать LargeTitle и SearchBar в моем tableViewController. Я хотел бы иметь белый и не связанные Панель навигации полупрозрачными. Я действительно не найти какой-либо способ сделать это. Мой код, в viewDidLoad (): если #available (IOS 11,0, *) {self.navigationController .navigationBar.prefersLargeTitles = верно?} Self.navigationController .navigationBar.isTranslucent = истина пусть IMG = UIImage (назван: "backgroundNav" ) navigationController .navigationBar.setBackgroundImage (IMG для:? .DEFAULT) searchController.searchBar.searchBarStyle = .minimal self.navigationItem.searchController = searchController self.navigationController .navigationBar.shadowImage = UIImage () проблема здесь состоит в том, что существует пустая строка состояния, когда SearchBar активен: Я хотел бы что-то подобное. Если удалить эти строки, это
KevinB
1

голосов
0

ответ
37

Просмотры

Drag animation on cell content inside/outside cell containers

I have a Table like this: Note that each table cell has a kind of container(Gray) where the content (White) inside can be moved to another container or ordered inside the same container. If a container doesn't have a content, it's gray and it has a minimum size, but you can add as many content as you want inside it and the container will expand to accommodate the new content, or contract when a container is removed from it. You can move a content from one container to another. Inside a container the user can also reorder the content just like a regular UITableView. I don't know how to get this effect, I thought of adding a UITableView inside each container, but you cannot drag a table from one UITableView to another. So I'm considering a UICollectionView, but then I'll not have all "free" UITableView drag/sort animations which can be quite cumbersome to implement. (Just the sort ordering alone has a lot of details involved like sorting everything while the user drags the content on the table). I'm wondering if anyone has an idea of how to implement this leveraging as much as possible from the iOS SDK. Thanks.
Wak

Просмотр дополнительных вопросов