@ios_ru

Страница 544 из 2351
Alexander
20.01.2017
21:09:47
сделал так let prevController = self.presentingViewController as! SetListViewController

получил Could not cast value of type 'UINavigationController' (0x10cc69008) to SetListViewController

-_-
20.01.2017
21:11:19
можно кинуть Notification, можно контроллеру передать блок, который он выполнит перед закрытием

получил Could not cast value of type 'UINavigationController' (0x10cc69008) to SetListViewController
презентишь не от SetListViewController, а от его UINavigationController скорее всего. Видно ж по ошибке

Google
Alexander
20.01.2017
21:12:32
видно. но для меня пока не очевидно как получить именно setListcontroller

как-то аля self.presentingViewController.контроллер as! SetListViewController

-_-
20.01.2017
21:13:12
как ты презентишь контроллер добавления записи?

Alexander
20.01.2017
21:13:53
в верхнем нав табе кнопочка

+

-_-
20.01.2017
21:15:39
Ну или тип такого let navVC = self.presentingViewController as! UINavigationController let prevController = navVC.visibleViewController as! SetListViewController

Alexander
20.01.2017
21:16:26
override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if (segue.identifier == "AddSetButtonPressed") { let controller = segue.destination as! AddSetViewController controller.exercise = self.exercise! controller.workout = self.workout } }

-_-
20.01.2017
21:17:43
Ааа, тут еще и сториборд

Имхо нотификейшн проще всего

Alexander
20.01.2017
21:18:19
можно ссылочку почитать что это

и если возможно то пример

-_-
20.01.2017
21:18:32
http://stackoverflow.com/questions/24049020/nsnotificationcenter-addobserver-in-swift

Google
-_-
20.01.2017
21:18:39
Вот тут пример как подписаться

Alexander
20.01.2017
21:18:51
спасибо

-_-
20.01.2017
21:18:58
а, ну ниже есть и как отправить

Общий смысл - есть NotificationCenter, это фигня, которая позволяет отправлять сообщения по ключу. В контроллере с данными ты подписываешься на сообщения. Ключ какой-нибудь свой делаешь (это строка). И устанавливаешь метод, который дернется при получении такого сообщения. В этом методе уже апдейтишь tableView или что там у тебя. В контроллере с добавлением записи после успешного добавления ты просто отправляешь сообщение по ключу. Контроллер списка его поймает и сделает обновление. Главное потом контроллер списка надо отписать от центра этого

Taras
20.01.2017
21:21:50
Доброй ночи) Помогите, пожалуйста, решить вопрос. На stackoverflow не сильно помогли :( http://stackoverflow.com/questions/41703230/dashed-uibezierpath-subpath-junctions

Alexander
20.01.2017
21:22:24
а. тригеры (аналогия js)

смысл понял

щас гляну реализацию. спасибо за наводку.

хотел попробовать проще и быстрее

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if (segue.identifier == "AddSetButtonPressed") { let controller = segue.destination as! AddSetViewController controller.exercise = self.exercise! controller.workout = self.workout controller.setListController = self } }

добавил controller.setListController = self

и собсна dismiss(animated: true, completion: nil) self.setListController!.tableView.reloadData()

но не сработало

-_-
20.01.2017
21:28:36
Ну так писать это на самом деле некрасиво

Alexander
20.01.2017
21:28:51
я понимаю что это костыли

Евгений
20.01.2017
21:28:55
добавил controller.setListController = self
так где-нибудь можно заретейнить контроллер и будет утечка памяти

Alexander
20.01.2017
21:29:10
просто решил попробовать. вникаю так сказать

-_-
20.01.2017
21:29:29
Хотя странно, что не заработало

Живой ли этот setListController

Google
Alexander
20.01.2017
21:31:04
там же ! стоит - ошибка бы была

но вообще вот скрин https://yadi.sk/i/PZ8PMe9s3A4xqg

-_-
20.01.2017
21:31:49
А. Я просто свифт не знаю. Тогда вдвойне странно

Хм

Попробуй до дисмисса его дёрнуть

Раз уж так)

Alexander
20.01.2017
21:33:12
ничего не изменилось

-_-
20.01.2017
21:33:26
Стоп

А данные для tableView ты как вообще берешь?

Евгений
20.01.2017
21:33:51
никак

-_-
20.01.2017
21:33:56
Толку от reloadData, если у тебя они не менялись

Сделай в своём контроллере метод needUpdateData

Alexander
20.01.2017
21:34:52
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { if (self.fetchedResultsController != nil) { if self.fetchedResultsController!.fetchedObjects!.count == 0 { do { try self.fetchedResultsController!.performFetch() } catch let error as NSError { print("Could not fetch \(error), \(error.userInfo)") } } return self.fetchedResultsController!.fetchedObjects!.count } else { return 0 } }

-_-
20.01.2017
21:35:03
В нем сначала заново считай данные (в массив или как они там лежат), а потом дёрни reloadData

Ну, тут тож понятно

Он у тебя в этом методе и не загрузит их заново

Alexander
20.01.2017
21:35:43
точно NSFetchedResultsControllerDelegate не причем?

-_-
20.01.2017
21:35:57
Тут другая ситуация

У тебя проверяется есть ли объекты только в первый раз

И они грузятся

Google
-_-
20.01.2017
21:36:38
А в следующий вызов у тебя count!=0

Alexander
20.01.2017
21:37:10
ща гляну заходит ли туда вообще

-_-
20.01.2017
21:37:25
Убери проверку на count == 0

Чтобы всегда делало performFetch

И попробуй свой вариант

Что на скрине был

Admin
ERROR: S client not available

Alexander
20.01.2017
21:38:17
да. эта проверка срабатывает

Mikhail
20.01.2017
21:38:18
public var fetchedResultsController: NSFetchedResultsController<your instance>? { didSet { if let frc = fetchedResultsController { if frc != oldValue { frc.delegate = controller do { try performFetch() } catch { print(error) } } } else { controller.tableView.reloadData() } } } public func performFetch() throws { if let frc = fetchedResultsController { defer { controller.tableView.reloadData() } do { print("fetched") try frc.performFetch() } catch { throw error } } }

-_-
20.01.2017
21:39:12
да. эта проверка срабатывает
попробуй убрать временно override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { if (self.fetchedResultsController != nil) { do { try self.fetchedResultsController!.performFetch() } catch let error as NSError { print("Could not fetch \(error), \(error.userInfo)") } return self.fetchedResultsController!.fetchedObjects!.count } else { return 0 } }

Вот так

Alexander
20.01.2017
21:40:04
да. так работает

но я этот пример где-то скопипиздил

-_-
20.01.2017
21:40:29
в нем { do { try self.fetchedResultsController!.performFetch() } catch let error as NSError { print("Could not fetch \(error), \(error.userInfo)") } self.tableView.reloadData() }

а на dismiss вызови self.setListController!.needUpdateData()

Alexander
20.01.2017
21:41:57
вариант

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

-_-
20.01.2017
21:59:33
Ну, судя по кускам кода, там и до этого костылей хватало ?

Maxx
20.01.2017
22:25:21
у меня есть uitableviewcontroller из которого я в модальном окне добавляю строку в базу
1. назначь TableVC делегатом второго VC 2. второй VC презентуется, например, по методу делегата didSelectRow... - у него протокольный метод, обновляющий модель 3. по завершении добавления данных: UI - второй VC сворачивается, обновляется модель TableVC реализует протокольный метод второго VC, в нем передаются в качестве параметров а) экземпляр второго VC б) данные какие-нибудь нужные, TableVC по завершении вызывает reloadData() как презентовать-убрать второй контроллер, собссно, разницы большой нет: модально или пушить в стек, кому что больше подходит

Google
Maxx
20.01.2017
22:26:10
ну естественно у второго VC ты прописываешь протокол с 1 методом

Alexander
20.01.2017
22:26:47
сколько непонятных слов...попробую вкурить

Maxx
20.01.2017
22:29:37
ну если с CoreData разобрался и FetchedResultsVC, с протоколами-делегатами подавно разберешься ))

Alexander
20.01.2017
22:30:40
да. дело времени. спасибо.

буду читать мат часть

Andrey
20.01.2017
22:34:23
Кто за VIPER?

Andrey
20.01.2017
22:47:11
-_-
20.01.2017
22:47:59
Сука)
Ну я правда помню как он рассказывал на MBLT позапрошлом. Все так набежали как будто вакцину от СПИДа нашли)

Andrey
20.01.2017
22:48:20
У нас в проекте, мне очень нравится

-_-
20.01.2017
22:49:18
Есть кстати какой-нибудь пример випера на том же гитхабе сложнее формы входа с парой полей?

Семён
20.01.2017
23:22:26
вход с тремя полями подойдет? )

-_-
20.01.2017
23:37:19
Совсем другой разговор :D

O'Miay
20.01.2017
23:39:54
https://radio-t.com

Dmitry
21.01.2017
13:22:29
Ребят привет, нужен фронт как в игре Tripple Town на IOS Кто то может ? Если да пиши сразу со своей ценой в лс.

Страница 544 из 2351