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

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

голосов
3

ответ
2.9k

Просмотры

Swift 3: суммарное значение с помощью группы из массива объектов

У меня есть этот код в моем ViewController вар туАггау: Array = Array () для I в 0 ..
Ziggy
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

ответ
775

Просмотры

Чувствительный к регистру замены символов в строке Swift

Мне нужно заменить символы в строке Swift с учетом регистра. Я с помощью replacingOccurrences (из: с: опции: выбор :) встроенные функции строки, чтобы изменить каждый «а» до «/ а /», каждый «Ъ» другу «/ б /», и так на, как это: stringConverted = stringConverted.replacingOccurrences (из: «а», с: «/ а /», опции: []) Тогда я меняю каждый «/ а /» его соответствующей буквой, которая является «». Меняю каждый «/ б /» его соответствующей буквой, которая «д», и так далее. Моя проблема заключается в том, что мне нужна эта замена, чтобы быть чувствительны к регистру. Я смотрел эту игру, но я попробовал то, что я нашел, и это не помогло. Должен ли я использовать аргумент диапазона? Или я делаю что-то еще не так?
Sam
1

голосов
1

ответ
1.5k

Просмотры

Swift changing constraints depending on device orientation

When the device is rotated from portrait to landscape, the width constraint of the view is updated but it does not update when the device is rotated from landscape to portrait My code: override func viewDidLoad() { super.viewDidLoad() theView.translatesAutoresizingMaskIntoConstraints = false theView.topAnchor.constraint(equalTo: view.topAnchor, constant: 0).isActive = true theView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: 0).isActive = true theView.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 0).isActive = true theView.rightAnchor.constraint(equalTo: view.rightAnchor, constant: 0).isActive = true } override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { When the device is first rotated from portrait to landscape 'theView' width get the 50% of the view width if UIDevice.current.orientation.isLandscape { theView.widthAnchor.constraint(equalTo: view.widthAnchor, multiplier: 0.50).isActive = true Rotating from landscape to portrait does not restore the original width } else { theView.widthAnchor.constraint(equalTo: view.widthAnchor, multiplier: 1.00).isActive = true } } Here is an image that shows what I am trying to do.
Nicoli
1

голосов
2

ответ
8.1k

Просмотры

Xcode: класс не является значением ключа кодирования-совместимый [дубликат]

Этот вопрос уже есть ответ здесь: Что это значит? «„NSUnknownKeyException“, причина: ... этот класс не является значением ключа кодирования совместимый для ключа X» 66 ответов я сейчас работаю сам через этот учебник: https://developer.apple.com/library/content/referencelibrary/ GettingStarted / DevelopiOSAppsSwift / ConnectTheUIToCode.html # // apple_ref / DOC / UID / TP40015214-Ch22-SW1 После создания функции для кнопки (в ~ 2/3 на странице) Я попытался запустить код и получил исключение: 2017- 12-08 11: 24: 31,343183 + 0100 FoodTracker [2159: 154603] *** Нагрузочного приложения из-за неперехваченное исключение 'NSUnknownKeyException', причина: «[SetValue: forUndefinedKey]: этот класс не является значением ключа кодирования совместимым для ключ setDefaultLabelText. *** Первый стек бросить вызов:
Ginso89
1

голосов
2

ответ
154

Просмотры

Как я могу сделать мое приложение вести себя, как я меняю приложение является агентом (UIElement) во время выполнения с помощью Swift?

Я кодирование приложения Mac, который является NSPopover на правой стороне панели меню (Application является агентом (UIElement) установлено в YES). Я позволяю пользователю отделить поповер, нажав и перетащив его вниз, что ставит приложение внутри окна. Это работает нормально; Однако, когда приложение утащили из строки меню и превращена в окно, я хотел бы значок моего приложения, чтобы выйти на скамье подсудимых, а также шоу-приложение специфические меню на левой стороне панели меню, как если бы Применение является агентом (UIElement) установлен в NO. И наоборот, когда окно закрыто и приложение возвращается в пирог в строке меню, я хотел бы значок моего приложения, чтобы исчезнуть из дока и больше не показывать приложения конкретного меню на левой стороне панели меню (Приложение агент (UIElement) установлен обратно в YES). От этого вопроса, Я понимаю, что изменение приложения является агентом (UIElement) во время выполнения не представляется возможным. Однако, ответ дается в Objective-C, и последняя функция, как представляется, обесценились, так как OS X 10.9. Как я могу сделать мое приложение имеет такое же поведение, как изменение приложения является агент (UIElement) во время выполнения с помощью Swift? Я знаю, что показ барного меню значка приложение / меню будет происходить в windowDidBecomeMain и скрытие штриховые меню значка приложение / меню будет происходить в windowWillClose. Благодарю. Как я могу сделать мое приложение имеет такое же поведение, как изменение приложения является агент (UIElement) во время выполнения с помощью Swift? Я знаю, что показ барного меню значка приложение / меню будет происходить в windowDidBecomeMain и скрытие штриховые меню значка приложение / меню будет происходить в windowWillClose. Благодарю. Как я могу сделать мое приложение имеет такое же поведение, как изменение приложения является агент (UIElement) во время выполнения с помощью Swift? Я знаю, что показ барного меню значка приложение / меню будет происходить в windowDidBecomeMain и скрытие штриховые меню значка приложение / меню будет происходить в windowWillClose. Благодарю.
W. Cook
1

голосов
1

ответ
502

Просмотры

Как сбросить оператор Observable интервал в RXSwift?

Я новичок в RXSwift и я определил Observable последовательность интервалов таймера, который вызывает метод WebService каждую секунду. В этой связи WebService, я получить новое значение времени повтора, который должен заменить с моим текущим временем. Как восстановить эту последовательность с новым значением времени? Это мой код: FUNC mySequence () {/////////////////////////////////////// подписаться на Таймер (время изменения) время вара = попробовать! self.timer.value () self.disposeTimer = timer.subscribe ({значение в момент времени = value.element! печать ( "======================= ====== \ (String (описание: время)) =================================== ==== ")}) /////////////////////////////////////// подписаться на таймер (изменение времени) пусть наблюдаемое = Observable.interval (вРЕМЯ нужно изменить После ответа, планировщик: MainScheduler.instance).
iSibDev
1

голосов
3

ответ
160

Просмотры

Get indexPath from UICollectionViewController to UICollectionViewCell subclass

in my view controller I Am loading a custom CollectionViewCell with subclass. Based on the position of a cell's indexpath I want to format the text labels differently. I.e. first row has only one cell with bigger text, whereas the second has two cell with smaller text. How can I access the indexpath from my UICollectionView in my UICollectionViewCell subclass? I tried a delegate protocol but this always returns nil. Code below and Thanks so much! Markus UICollectionViewController: import UIKit protocol WorkoutDataViewControllerCVDataSource: AnyObject { func workoutType(for workoutDataViewControllerCV: WorkoutDataViewControllerCV) -> WorkoutType func workoutDistance(for workoutDataViewControllerCV: WorkoutDataViewControllerCV) -> Double func workoutDuration(for workoutDataViewControllerCV: WorkoutDataViewControllerCV) -> Double func workoutInstantVelocity(for workoutDataViewControllerCV: WorkoutDataViewControllerCV) -> Double } final class WorkoutDataViewControllerCV: UIViewController { @IBOutlet weak var collectionView: UICollectionView! weak var dataSource: WorkoutDataViewControllerCVDataSource! private lazy var velocityFormatter = VelocityFormatter(dataSource: self, delegate: self) private lazy var averageVelocityFormatter = VelocityFormatter(dataSource: self, delegate: self) override func viewDidLoad() { super.viewDidLoad() self.collectionView.register(MeasurementCollectionViewCell.preferredNib, forCellWithReuseIdentifier: MeasurementCollectionViewCell.preferredReuseIdentifier) } } // MARK: - Managing UICollectionView extension WorkoutDataViewControllerCV: UICollectionViewDataSource { func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return 4 } func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Measurement Cell", for: indexPath) return cell } } extension WorkoutDataViewControllerCV: UICollectionViewDelegateFlowLayout { func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { let availableWidth = self.view.frame.width switch indexPath.row { case 0: return CGSize(width: availableWidth, height: 150) case 1: return CGSize(width: availableWidth/2.1, height: 150) case 2: return CGSize(width: availableWidth/2.1, height: 150) case 3: return CGSize(width: availableWidth, height: 150) default: return CGSize(width: availableWidth/2.1, height: 150) } } } // MARK: - Managing VelocityFormatter extension WorkoutDataViewControllerCV: VelocityFormatterDataSource { func duration(for velocityFormatter: VelocityFormatter) -> Double { return dataSource.workoutDuration(for: self) } func distance(for velocityFormatter: VelocityFormatter) -> Double { return dataSource.workoutDistance(for: self) } func instantVelocity(for velocityFormatter: VelocityFormatter) -> Double { return dataSource.workoutInstantVelocity(for: self) } } UICollectionViewCell.swift import UIKit final class MeasurementCollectionViewCell: UICollectionViewCell { @IBOutlet private var measurementPropertyLabel: UILabel! @IBOutlet private var measurementValueLabel: UILabel! @IBOutlet private var measurementUnitLabel: UILabel! static let preferredReuseIdentifier = "Measurement Cell" static let preferredNib = UINib(nibName: "MeasurementCollectionViewCell", bundle: nil) override func awakeFromNib() { super.awakeFromNib() updateMeasurement(property: "Speed", value: "100", unit: "km/h") //measurementValueLabel.font = measurementValueLabel.font.monospacedDigitFont } func updateMeasurement(property: String, value: String, unit: String?) { measurementPropertyLabel.text = property measurementValueLabel.text = value measurementUnitLabel.text = unit } }
Starkus
1

голосов
1

ответ
61

Просмотры

Глобальная функция вызывает мутирует метод типа протокола. Как я могу избавиться от объекта вар TMP?

это мой рабочий фрагмент кода. Но я хочу, чтобы избавиться от переменной вар TMP в функции скольжения. Протокол Переносный {мутирует FUNC шаг (до точки: CGPoint)} Класс автомобиля: Переносный {точка вар: CGPoint = CGPoint (х: 23, у: 42) FUNC шаг (до точки: CGPoint) {self.point = точка печати (» Метод переход от класса автомобиля точки: \ (точка) ")}} структура Форма: Подвижный {точка вара: CGPoint = CGPoint (х: 23, у: 42) мутирует Func движения (к точке: CGPoint) {self.point = точка печать ( "Метод движение от точки структуры Shape: \ (точка)")}} вар Приус: Car = Car () вар квадрат: Shape = Shape () FUNC слайд (слайдер: Подвижный) {вар TMP = слайдер //
fvdb
1

голосов
1

ответ
114

Просмотры

Как декодировать JSON, который имеет несколько списков, которые неназванные в Swift [дублированный]

Этот вопрос уже есть ответ здесь: Декодирование JSON массив различных типов в Swift 3 ответов Я пытаюсь декодировать строку JSON, но, кажется, есть несколько списков, которые не имеют никаких имен / ключи, которые я могу позвонить с моими структурами. Из того, что я могу сказать (с небольшим количеством знаний у меня есть) есть два списка внутри этого JSON, и я хочу только второй список. Я знаю, как декодировать нормальный JSON, но выяснить, как назвать этот список без ключа / массив озадачивает. Я пытался сделать мое использование STRUCT 0 или 1, в зависимости от того, какого списка я хотел, как имя дела, но это не сработало. Я действительно просто запутался о том, как назвать то, что не по имени явно. Ниже мои данные JSON и код. Вот небольшая часть JSON: [{ "страница": 1, "страница": 1, "per_page": URL? {Вар компонента = URLComponents (URL: сам, resolvingAgainstBaseURL: истинная) компонента .queryItems = queries.compactMap {URLQueryItem (название: $ 0,0, стоимость: $ 0,1)?} Возвращаемые компоненты .url}}? Я просто хочу, чтобы в конечном итоге получить доступ к датам и поместить их в массив для Tableview и быть в состоянии получить доступ к остальной части данных в формате JSON для следующей точки зрения. Большое вам спасибо, Джек URL}} Я просто хочу, чтобы в конечном итоге получить доступ даты и поместить их в массив для Tableview и быть в состоянии получить доступ к остальной части данных в формате JSON для следующей точки зрения. Большое вам спасибо, Джек URL}} Я просто хочу, чтобы в конечном итоге получить доступ даты и поместить их в массив для Tableview и быть в состоянии получить доступ к остальной части данных в формате JSON для следующей точки зрения. Большое вам спасибо, Джек
Jack Welch
1

голосов
1

ответ
80

Просмотры

Обнаружение до iPhone выключается?

это позволило обнаружить до того, как iPhone выключается для вызова действия, как сохранение данных в постоянном хранилище и т.д. для Swift я попробовал функцию appWillEnterBackground и appWillTerminate, но didn't работу, когда я выключить телефон в приложении
SwiftNewling
1

голосов
2

ответ
97

Просмотры

self.tabBarController.selectedIndex not calling viewDidAppear

I've been looking at and trying all the solutions others have posted to this problem, but I'm still not getting it. My use case is very simple. I have a viewController with a button, when that button is pressed I want to navigate to another tab and reload the data including an api call. When using the button, I navigate to the tab fine, but viewDidAppear is not being called. If on another tab, and navigate using the tab bar, viewDidAppear works fine. Also viewWillAppear is working, but I have to add a manual delay to the functions I want to call so it's not ideal. So what do I need to do to navigate using self.tabBarController.selectedIndex = 0 and get the functionality of viewDidAppear? Update: The viewWillAppear method I added gets called but I have to add a delay to my functions in order for them to work, and it's a bit clunky, not ideal. Not sure why viewDidAppear will not work :( Here is a screenshot of the structure: I appreciate any help on this one! The "current" ViewController is my tab index 2: import UIKit class PostPreviewVC: UIViewController { //Here I create a post object and post it to the timeline with the below button @IBAction func postButtonPressed(_ sender: Any) { //create the post via Firebase api self.tabBarController?.selectedIndex = 0 } } In my destination viewController: import UIKit import Firebase import SDWebImage import AVFoundation class HomeVC: UIViewController { // MARK: - PROPERTIES var posts = [Post]() let refreshControl = UIRefreshControl() //more properties... @IBOutlet weak var tableView: UITableView! override func viewDidLoad() { super.viewDidLoad() setupUI() configureTableView() reloadTimeline() UserFirebase.timeline { (posts) in self.posts = posts self.tableView.reloadData() } } override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) print("viewDidAppear") _ = self.view setupUI() configureTableView() reloadTimeline() UserFirebase.timeline { (posts) in self.posts = posts self.tableView.reloadData() } } override func viewWillAppear(_ animated: Bool) { super.viewDidAppear(animated) print("viewWillAppear") DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { self.reloadTimeline() self.configureTableView() } } //All the tableview code below here... } Added a custom class for my tab bar controller: import UIKit class TabBarController: UITabBarController, UITabBarControllerDelegate { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. } override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) print("viewDidAppear in tabBar custom Class called") } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) print("viewWillAppear in tabBar custom Class called") } }
TJMac
1

голосов
2

ответ
31

Просмотры

Getting non--void error on function return [duplicate]

Этот вопрос уже есть ответ здесь: Неожиданное Непустое Возвращаемое значение В Пустотах Функции (Swift 2,0) 2 ответа Возврата данных из асинхронного вызова в Swift функции 11 ответов я получаю эту ошибку, и я знаю, эту проблему был решен здесь, прежде чем люди не добавление возврата -> к функции. Я не понимаю, почему это до сих пор дает мне ошибку. Неожиданное непусто возвращаемое значение в недействительной функции Я пытаюсь вернуть строку с именем сообщения. FUNC ParseIt (proURL: String, startStr: String, stopStr: String) -> Строка {пусть URL = URL (строка: "https://www.siteimfetchingfrom.com/827444000973") пусть задача = URLSession.shared.dataTask (с : URL) {(данные, ответ, ошибка) в случае ошибки!
1

голосов
1

ответ
42

Просмотры

Insert instead of update in firebase

Я пытаюсь вставить новые значения в Firebase в реальном времени базы данных. Но каждый раз, когда я «зарегистрировать» новый пользователь, мои данные базы данных становится заменен новым. Я совершенно запутался, как я могу это сделать по-другому. Это мой код .. // Создание нового пользователя с txtfield электронной почты и пароль Auth.auth () CreateUser. (WithEmail: адрес электронной почты, пароль: пароль) {authResult, ошибка ошибки // Printing если если ошибка = ноль {! печать (ошибка в любом) возвращении} // Получение справочной базы данных позволяет иому = Database.database () ссылке () // значения для вставки в базу данных позволяют значение = [ «Имя пользователя»:. self.username, «Электронную почта»: самостоятельно. электронная почта, "Name1": self.name1, "Name2": self.name2, "name3": self.name3, "Name4": self.name4, "Name5": self.name5,
Putte
1

голосов
2

ответ
87

Просмотры

RevenueCat - Почему я получаю: Ошибка домена = SKErrorDomain Code = 2 «Не удается подключиться к ITunes магазин»

У меня есть два авто-обновление подписки, ежемесячные и ежегодные (IOS). Я могу сделать покупку, когда я использую новый свежий пользователь песочницы. Несмотря на то, что я должен ввести свой пароль в три раза. Вот поток: Нажмите на подписку Введите пароль Promted ввести пароль еще раз получить «не может подключиться к ITunes Store,» ошибка попробуйте еще раз и ввести пароль покупки успешно. Двигаясь дальше, так как только это удастся, я теперь подписался и мой UI обновляется через слушателя в AppDelegate, который отправляет уведомление, что я подписаться. Но когда я пытаюсь переключить подписку, из ежемесячно в год, или наоборот, он всегда дает мне «Не удается подключиться к ITunes магазин» ошибка. Нет обновлений пользовательского интерфейса. Вот поток: Нажмите на другой подписке ввести пароль ITunes Получить «подтвердить покупку» диалог, в котором говорится, I» м изменение моей подписки нажмите Продолжить Получить «Вы все установить» предупреждение успеха. Отклонить оповещение Получайте «Не удается подключиться к ITunes Store,» ошибка Мой слушатель не был вызван, интерфейс не был обновлен, и т.д. Но если я смещать ошибку и нажмите подписку снова, я получаю уведомление, что говорит, я уже подписался в этом плане, даже если ошибка была брошена, и мой слушатель не забрать изменения. Я использую firebase. Я последовал быстрый старт и Firebase конкретных инструкций в RevenueCat документации. Все мои журналы отладки, кажется, хорошо, нет, не 200 статусов, не недопустимый продукт Идентификаторы. Вот некоторые фрагменты кода: AppDelegate: Purchases.debugLogsEnabled = истина Purchases.configure (withAPIKey: Constants.revenueCatKey) Purchases.shared.delegate = само FirebaseApp.configure () authHandle = Auth.auth ().
sharkonaut
1

голосов
3

ответ
78

Просмотры

Добавить UIButton с Автокомпоновкой программного

Я хочу добавить UIButton так: пусть switchTheme: UIButton = {пусть кнопку = UIButton.init () button.backgroundColor = .red button.setTitleColor (.blue для: .Normal) button.setTitle (Settings.isLightTheme ()? Strings.Various.switchToDark.value: Strings.Various.switchToLight.value для: .Normal) button.translatesAutoresizingMaskIntoConstraints = ложная кнопка возврата} (), а затем установить ограничения, такие как: switchTheme.bottomAnchor.constraint (equalTo: view.bottomAnchor) switchTheme .leftAnchor.constraint (equalTo: view.leftAnchor) switchTheme.rightAnchor.constraint (equalTo: view.rightAnchor) switchTheme.heightAnchor.constraint (equalToConstant: 40,0) но это проявляется не на дне, как это предположит, а сверху и без ограничений, применяемых ,
Evgeniy Kleban
0

голосов
1

ответ
25

Просмотры

Как избежать оповещения вызовов в IOS

Я разрабатываю приложение IOS с быстрым поясню, как мое приложение работает приложение будет подключаться к ПК клиенту с TCP / IP и получите номер телефона, чтобы набрать Когда я пытаюсь отправить номер в приложение, чтобы сделать вызов с телефоном Показывая оповещения с 2 кнопками «Вызов» и «Отмена». Есть ли способ избежать этого предупреждения? Примечание: Пользователь знает, что мое приложение будет делать вызов и я буду иметь соглашение с пользователем
Mahmoud Wizzo
1

голосов
1

ответ
32

Просмотры

Преобразование в Swift 5 доступен [на удержание]

Я получаю это предупреждение в Xcode 10.2. Переход к быстрым 5 доступен Когда я нажимаю эту ошибку он открывает окно Когда мы нажимаем ДАЛЕЕ, что будет ...
iOS
0

голосов
0

ответ
8

Просмотры

Как обнаружить плоскую поверхность с помощью Аркыт

Я создаю приложение для измерения высоты объекта с помощью Аркыто. Для небольших предметов, таких как бутылки, ручка и контролировать это показывает почти точный результат. но когда утра попробовать для некоторых крупных объектов, то есть высота мужчин, высота двери его показывает другой результат для каждого измерения. Я думаю, что его из-за обнаружения плоскости поверхности. есть ли лучшее решение для обнаружения самолета? или любой другой вариант для нахождения высоты? Кроме того, есть ли информация о рамках видения с Аркыты?
Sachu
1

голосов
1

ответ
301

Просмотры

Может быть UIApplicationOpenURLOptionsKey.sourceApplication ноль?

В последнее время после нового обновления приложения, мы начинаем получать аварии в строке пусть sourceApplication = опции [UIApplicationOpenURLOptionsKey.sourceApplication], как! Строка в следующем коде. Я просто интересно, почему это может быть ноль или это сбой из-за, как! нанизывать? Приложение FUNC (_ приложение: UIApplication, открытый URL: URL, опции: [UIApplicationOpenURLOptionsKey: Любой] = [:]) -> Bool {CoreAnalytics.shared.record ( "AppDelegate", действие: "Открыть URL") Branch.getInstance ( ) .handleDeepLink (URL) позволяет sourceApplication = опция [UIApplicationOpenURLOptionsKey.sourceApplication], как! Строка пусть аннотация = опция [UIApplicationOpenURLOptionsKey.annotation] CleverTap.sharedInstance () ?. handleOpen (URL, sourceApplication: sourceApplication). Вернуться GIDSignIn.sharedInstance () рукоятка (URL, sourceApplication: sourceApplication, аннотация: аннотация) || . FBSDKApplicationDelegate.sharedInstance () заявление (приложение, открытое: URL, sourceApplication: sourceApplication, аннотации: аннотация)}
kidsid49
1

голосов
1

ответ
275

Просмотры

Как я могу исправить следующую ошибку в Xcode: Ключ команда все должны иметь название, ключ и селектор? [Дубликат]

Этот вопрос уже есть ответ здесь: Ключ команда все должна иметь название, ключ и селектор 3 ответа Я пытаюсь выяснить, почему я получаю эту ошибку: Ключ команда все должна иметь название, ключ и селектор. Каждый раз, когда я открываю новый проект, эта ошибка возникает, прежде чем я что-либо изменить. Я вошел и посмотрел на исходный код для Main.Storyboard, но нет этикетки на всех. Это происходит сразу после создания нового проекта.
Jack Nordquist
1

голосов
1

ответ
86

Просмотры

Feedback json format wrong

. ReadingOptions.mutableContainers) печать (данные) // Я хочу знать, что это так я печатаю} поймать {печати (error.localizedDescription)}}}) резюме ()} Но консоль всегда говорит: Данные не могут быть читать, потому что это не в правильном формате Это JSON может быть форматом и читать в андроиде, если я использую JSONObject.getJSONArray ( «MyValue») ... Я пытаюсь использовать печать (данные) (без JSon кодирования), чтобы показать, если есть есть какие-либо данные в обратной связи, и я получаю 400byte в консоли, так что я уверен, что есть данные отправить обратно ко мне. ОБНОВЛЕНИЕ 12/28: { "имя": "ABC", "cardNumber": "1234567890", "данные": [{день: 20171228, время: 9:10:11}, {день: 20171226, время: 20: 00:12}, {день: 20171227, время: 15:30:22}]} I» м, что этот JSON можно прочитать в андроиде, приемник и передатчик я использую vb.net, это использовать sendingString = JsonConvert.SerializeObject (JSONClass), чтобы стать JSON строкой, а затем преобразовать байты для отправки. ОБНОВЛЕНИЕ 12/28 новых После попытки так много, я нашел строку можно получить обратную связь, но значение названия китайского слова, другое значение английского и номер, только имя нечитаемое, теперь я проверяю, который String.Encoding будет работать , а затем, если перекодировать его успеха, я буду пытаться форматировать в JSon Array.
Howard
1

голосов
0

ответ
80

Просмотры

Swift - Загрузить / Получение изображений в / из Firebase

Я хочу, чтобы мои пользователи могли устанавливать свои фотографии профиля в моем приложении. Я держу ДАННЫЕ профиля, который содержит пользовательский профиль изображение в качестве табличной ячейки. Тем не менее, у меня были проблемы в моем коде. Это моя функция просмотра таблицы: FUNC Tableview (_ Tableview: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {если (indexPath.section == 0) {пусть profileInfoCell = tableView.dequeueReusableCell (withIdentifier: "MyProfileInfoCell"), как! MyProfileInfoCell profileInfoCell.profilePicture.tag = indexPath.row пусть пользователь = пользователи [indexPath.row] profileInfoCell.username.text = user.username profileInfoCell.userEmail.text = user.email profileInfoCell.userReputation.text = "имеет 2 ответил любит" / * пусть profilePictureStorageRef = Storage. хранения () ссылки () ребенок ( "profilePicture") ребенок ((Auth.auth () CurrentUser .uid).?!) profilePictureStorageRef.getData (MaxSize:... 1 * 1024 * 1024, завершение: {данные, ошибка если пусть ошибка = ошибка {} еще {пусть IMAGE = UIImage (данные: данные) profileInfoCell.profilePicture.image = изображение!}}) * / вернуться profileInfoCell} И это моя imagePickerController функция: FUNC imagePickerController (_ подборщика: UIImagePickerController, didFinishPickingMediaWithInfo информация: [String: Любой]) {пусть indexPath = NSIndexPath (строка: 0, раздел: 0) пусть клетка = tableView.cellForRow (по адресу: indexPath как indexPath), как! MyProfileInfoCell! если позволить изображение = Информация [UIImagePickerControllerOriginalImage], как? UIImage {? SelectedImage = изображения клеток .profilePicture.contentMode = .scaleAspectFit клеток .profilePicture.image = изображение?} / * Пусть profilePictureStorageRef = Storage.storage () ссылка (forURL:. «GS: //cs401-402.appspot.com ") .child (" profilePicture "). ребенок ((Auth.auth (). CurrentUser? .uid)!), если пусть profilePicture = self.selectedImage, пусть ImageData = UIImagePNGRepresentation ((клетку? .profilePicture.image!)!) {profilePictureStorageRef.putData (ImageData, метаданные: ноль, завершение: {(метаданные, ошибка) в случае ошибки = ноль {возвращение} пусть profilePictureUrl = метаданные .downloadURL () ?. absoluteString self.ref.child ( "пользователи")? .child ((Auth.auth (). CurrentUser .uid)) ребенок ( "profilePicture") SetValue (profilePictureUrl)})} * / self.dismiss (анимированный:!..! правда, завершение: ноль)} Моя программа обрабатывает настройки изображение профиля правильно. Однако, когда я пытаюсь работать с Firebase после выбора картины профиля, у меня возникли проблемы. Закомментированные линии в функции imagePickerController вызывает многократное создание моей ячейки таблицы представления с профилем информацией. Я был бы признателен, если кто-то может мне помочь. Благодарю. Закомментированные линии в функции imagePickerController вызывает многократное создание моей ячейки таблицы представления с профилем информацией. Я был бы признателен, если кто-то может мне помочь. Благодарю. Закомментированные линии в функции imagePickerController вызывает многократное создание моей ячейки таблицы представления с профилем информацией. Я был бы признателен, если кто-то может мне помочь. Благодарю.
atunaysaka
1

голосов
0

ответ
87

Просмотры

Фибоначчи в линейное время, используя дополнительный указатель

У меня есть функция, чтобы найти п-е число в последовательности Фибоначчи, в котором я рекурсивно вызывая функцию. Сумма сохраняется в переменной класса и у меня есть дополнительный указатель я приращение каждый раз, когда функция вызывается. Этот дополнительный указатель ворот мяч, который диктует базовый случай, когда для выхода из цикла. Производительности я получаю, используя этот алгоритм, О (п) линейное время и O (1) пространства. Я получаю ожидаемый ответ, но я запутался, если это является приемлемым решением с точки кодирования интервью стенда. переменная х = 0 вар сумма = 0 FUNC myFibonacci (п: Int, а: Int, б: Int) -> Int {х + = 1, если (х == п) {возвращение сумма} еще {сумма = а + возвращение Ь myFibonacci (из: п, а: Ь, Ь: сумма)}} пусть finalAns = myFibonacci (из: 9, а: 0, Ь: 1) печать ( "п-я число в последовательности Фибоначчи \ (finalAns)") Выход :
paddy
1

голосов
0

ответ
35

Просмотры

TableView cellForRowAt перебирает через все клетки сразу же после вызова reloadData ()

Я использовал Tableview много, и я знаю, что это хорошо. но на этот раз он работает странно. Я добавил это делегации к классу: UITableViewDelegate, UITableViewDataSource. Я подключил делегат из раскадровки. клетки, показывая currectly и все работает нормально, но я хотел бы добавить пагинацию к моему столу и выяснил это методы перебора всех клеток сразу же после того, как я назвал «tableView.reloadData ()» cellForRowAt indexPath didEndDisplaying клеток willDisplay клетки Они не ждут для пользователя, чтобы просмотреть таблицу! Что я должен проверить !?
Alfi
1

голосов
1

ответ
98

Просмотры

In-App Покупка перенаправляет на другой контроллер зрения

Я играю за пару дней уже с покупками в приложении и нашли следующий вопрос (дайте мне знать, если это ожидаемое поведение). У меня есть приложение на TestFlight в данный момент, а не в Apple Store. У меня есть список элементов, которые пользователь может приобрести и когда пользователь нажимает «Покупку» она проходит через все обычные шаги: продукт выбрана, то я показываю свою AlertViewController с подтверждением покупки, а по завершению «представить» действие AlertViewController я называю buyProduct в моем менеджере IAP. Затем в диалоговом окне появляется нормальный диалог о «Отмена / Покупка» «Подтвердить In-App Purchase» с [Окружающая среда: Песочница] и т.д. Однако, когда я нажимаю «Купить» Я перенаправлены на предыдущую View Controller и «Вы все готово «. отображается на предыдущем View Controller, а не один я был. Если это нормально для TestFlight версии - то хорошо. Если это поведение у меня будет в Apple Store, то это плохо, мне нужно исправить. Вот мой в-приложение менеджер по закупкам: класс IAPManager: NSObject {статического пусть sharedInstance = IAPManager () статический пусть IAPManagerPurchaseNotification = "IAPManagerPurchaseNotification" fileprivate вар productsRequest: SKProductsRequest? fileprivate вар productsRequestCompletionHandler: ProductsRequestCompletionHandler? FUNC инициализации () {SKPaymentQueue.default (). добавить (Я)} функ деинициализации () {SKPaymentQueue.default (). удалить (Я)} /// Запрос продукции от Apple Store. /// - параметр продукции: IAPProduct купить. FUNC requestProduct (продукты: [IAPProduct], _ completionHandler: @escaping ProductsRequestCompletionHandler) {productsRequest ?. отменить () productsRequestCompletionHandler = completionHandler вар productIdentifiers: Set = Set () для продукта в продуктах {productIdentifiers.insert (product.rawValue)} productsRequest = SKProductsRequest (productIdentifiers: productIdentifiers)? productsRequest .delegate = само productsRequest .start ()} / // Есть ли фактические покупки от Apple Store. /// - параметр продукт: продукт, который пользователь хочет приобрести. FUNC buyProduct (_ продукт: SKProduct) {Log.info (сообщение: "Пользователь \ (UsersManager.sharedInstance.currentUserId) покупает \ (product.productIdentifier)", отправитель: самостоятельно) пусть оплаты = SKPayment (продукт: продукт) SKPaymentQueue. . (по умолчанию) добавить (платежные)} класс функ canMakePayments () -> Bool {вернуться SKPaymentQueue. canMakePayments ()} /// Восполнение ранее приобретенных без расходных материалов. функ restorePurchases () {. SKPaymentQueue.default () restoreCompletedTransactions ()}} расширение IAPManager: SKProductsRequestDelegate {FUNC productsRequest (_ запрос: SKProductsRequest, didReceive ответ: SKProductsResponse) {Log.info (сообщение: "Loaded список продуктов ..." отправитель: само) пусть продукция = response.products productsRequestCompletionHandler? (правда, продукты) clearRequestAndHandler () для р в продуктах {log.info (сообщение: «Найдено продукт: \ (p.productIdentifier) ​​\ (p.localizedTitle) \ ( p.price.floatValue) "отправитель: Я)}} запрос FUNC (_ запрос: SKRequest, didFailWithError ошибка: Error) {Log.error (сообщение:" Не удалось загрузить список продуктов с ошибкой: \ (error.localizedDescription) », отправитель: самостоятельно), если пусть transactionError = transaction.error в NSError? {Если transactionError.code = SKError.paymentCancelled.rawValue {Log.error (сообщение: "Ошибка транзакции: \ (transactionError.localizedDescription)", отправитель: самостоятельно)!}}. SKPaymentQueue.default () finishTransaction (транзакция)} частная функ deliverPurchaseNotificationFor (идентификатор: String) {охранник пусть идентификатор = идентификатор еще {возвращение} NotificationCenter.default.post (имя: NSNotification.Name (RawValue: IAPManager.IAPManagerPurchaseNotification), объект: идентификатор)}} Код, который вызывает IAPManager: пусть тревога = UIAlertController (название: "", сообщение: "", preferredStyle: .alert) IAPManager.sharedInstance.requestProduct (продукты: [продукт]) {успех, продукты в караульной успеха,
Array
1

голосов
0

ответ
347

Просмотры

Swift класс в ObjC проекте: Получатель «MySwiftClass» для класса сообщения является опережающим объявлением

Проведя несколько часов, чтобы интегрировать оперативные файлы успешно на мой основе Objective-C проект IOS, я сталкиваюсь следующий вызовом Сейчас: В одном из моего заголовка класса Objective-C (Say, MyObjCClass.h), я делаю опережающее объявление для MySwiftClass , В соответствующем файле .m я определяю экземпляр MySwiftClass _swiftClassInstance. В методе инициализации из MyObjCClass, я пытаюсь создать экземпляр его следующим образом: _swiftClassInstance = [[MySwiftClass Alloc] инициализации]; Когда я компилирую код, я получаю 2 ошибки: Получатель «MySwiftClass» для класса сообщения является опережающим объявлением приемника типа «MySwiftClass», например, сообщения является опережающим объявлением я уже сделал следующее: импортированная MyProject-Swift.h в MyObjCClass. м-файл. Маркировал быстрый класс с @objc и открытой Итак, что может быть причиной проблемы?
Harish J
1

голосов
0

ответ
40

Просмотры

Presenting from UISearchController causes NSException

Так что я немного тупик на этом. Мое приложение используется для работы и после того, как будет XCode 9 это, кажется, перестал работать. У меня есть UITableViewController с прикрепленным UISearchController, чтобы сделать некоторые очень простой поиск. Я подключен мой UITableViewController, чтобы иметь поле resultSearchController. Это, как я его настройки в viewDidLoad: self.resultSearchController = UISearchController (searchResultsController: ноль) self.resultSearchController.searchResultsUpdater = само self.resultSearchController.dimsBackgroundDuringPresentation = ложь self.resultSearchController.searchBar.placeholder = "Тип поиска" сам. resultSearchController.searchBar.sizeToFit () self.tableView.tableHeaderView = self.resultSearchController.searchBar self.tableView. reloadData () Мой главный контроллер реализует протокол UISearchResultsUpdating таким образом, мы там хорошо. Вот та часть, где вещи взорваться. Когда кто-то стучит в результате поиска это логика, которая обрабатывает, что делать дальше: переопределения Func Tableview (_ Tableview: UITableView, didSelectRowAt indexPath: IndexPath) {пусть quoteDetailNavController = Storyboard.findViewController ( "Поиск", идентификатор: "QuoteDetailNav") пусть quoteDetail = (quoteDetailNavController как! UINavigationController) .viewControllers [0], как! QuoteDetailViewController quoteDetail.quote = quoteSearchResults [indexPath.row] quoteDetail.delegate = само self.resultSearchController.present (quoteDetailNavController, анимированные: истина) {}} Все, кажется, работает нормально, но когда я называю self.resultSearchController. присутствует (quoteDetailNavController, анимированные: истинные) {} сбои приложения и все, что я получаю, что NSException сделал это. Я установить контрольные точки и попытался поймать NSException, но все безрезультатно. Очевидно, я делаю что-то неправильно, задавая UISearchController представить другой контроллер, но я не могу сказать, что это такое. Заранее спасибо!
bitops
1

голосов
1

ответ
159

Просмотры

RealmCollectionChange изменен параметр имеет несколько индексов, когда только один объект изменен

Проблема: Когда один объект изменяется в Realm, модифицированный параметр в RealmCollectionChange передается несколько индексов Детали: Данный объект Person, который содержит список собак объектов и объект Dog, который имеет владелец свойство типа класса Person Dog: Object {@objc динамического имени вара = «» @objc динамического вар владелец: Человек? } Класс Person: Object {@objc динамического имени вара = "" пусть собаки = List ()}, то один человек создан с двумя собаками пусть person0 = Person () person0.personName = "Leroy" пусть dog0 = Dog () dog0 .name = "пятно" dog0.owner = person0 пусть dog1 = Dog () dog1.name = "Rex" dog1.owner = person0 person0.dogs.append (dog0) person0.dogs. присоединять (dog1) // записываем person0 в Realm, который создает человека и двух собак и наблюдать функцию Func doObserve () {пусть область = попробовать! Realm () пусть результаты = realm.objects (Dog.self) notificationToken = results.observe {[слабый] (само изменение: RealmCollectionChange) в изменениях переключателя {случай .initial: случай .update (_, пусть делеции, вставки пусть, пусть модификации): для индекса в делециях {Print ( «удаленный объекта в индексе: \ (индекс)»)} для индекса в вставках {Print ( «вставленный объект с индексом: \ (индекс)»)} для индекса в модификации {печати ( «модифицированный объект с индексом: \ (индекс)» ) Пусть объект = результаты [индекс] печать (объект) // печатает dog0 и dog1 когда dog1 это мод} случае .error (пусть ошибка): FatalError ( "\ (ошибка)")}}} Затем, если файл Realm является открыт с RealmBrowser (или с помощью кода в приложении) и имя dog1 (Rex) изменяется на Fluffy, модифицированный параметр в RealmCollectionChange содержит два индекса, 0 и 1, даже если только dog1 (индекс 1) модифицируют. Является ли это поведение правильным, и если да, то есть еще один вариант, чтобы просто получить (индекс к) объекта, который был изменен? (Или я полностью отсутствует что-то очевидное?) если файл Realm открыт с RealmBrowser (или с помощью кода в приложении) и имя dog1 (Rex) изменяется на Fluffy, модифицированный параметр в RealmCollectionChange содержит два индекса, 0 и 1, даже если только dog1 (индекс 1), модифицированные , Является ли это поведение правильным, и если да, то есть еще один вариант, чтобы просто получить (индекс к) объекта, который был изменен? (Или я полностью отсутствует что-то очевидное?) если файл Realm открыт с RealmBrowser (или с помощью кода в приложении) и имя dog1 (Rex) изменяется на Fluffy, модифицированный параметр в RealmCollectionChange содержит два индекса, 0 и 1, даже если только dog1 (индекс 1), модифицированные , Является ли это поведение правильным, и если да, то есть еще один вариант, чтобы просто получить (индекс к) объекта, который был изменен? (Или я полностью отсутствует что-то очевидное?)
Jay
1

голосов
0

ответ
49

Просмотры

Как управлять ICloud Документом MAC App

Документы, предоставляемые APPLE не делают для меня ясно. Это может быть мой английский предельный уровень. Я надеюсь, что вы можете помочь мне, чтобы получить лучшее представление о нем. Я использую класс FileManager для управления файлами ICloud, в том числе методов copyItem, moveItem и RemoveItem. Я непосредственно иметь дело с файлами в адрес icloudDocument в качестве обычного файла. После согласования с NSMetadataQuery, я сравниваю время изменения и время создания файлов, поэтому мне удалось файлы, но я нашел, что это очень плохо, потому что мне нужно, чтобы судить файлы нужны ли обновление, загрузка или удаление. Позже я узнал, что класс FileManager имеет управляющий ICloud на основе элементов, который включает в себя evictUbiquitousItem, startDownloadingUbiquitousItem и другие методы. Это, кажется, легко управлять, но это не делает меня ясно. Мои проблемы сейчас: что конечный файл, когда локальный файл не соответствует файлу ICloud? (Нет нет удобного способа, автоматическая синхронизации), что я должен делать, если ICloud не существует, но когда существует локальный файл? (Удалить его напрямую? Или это надо судить?), Как вы знаете, какие файлы загружаются на локальный?
Diven Lee
1

голосов
0

ответ
72

Просмотры

Есть ли способ, чтобы отменить запрос Зрение Framework (VNDetectTextRectanglesRequest) один раз срабатывает?

Я бегу запрос Зрение Framework для приложения IOS, как следующим образом: пусть textDetectionRequest = VNDetectTextRectanglesRequest (completionHandler: self.findTextBoxes) пусть textDetectionHandler = VNImageRequestHandler (cgImage: изображение, ориентация: ориентация, опции: [:]) DispatchQueue.global (QoS : .background) .async {делать {попробуйте textDetectionHandler.perform ([textDetectionRequest])} поймать {печать (ошибка)}} Это работает нормально, и я использую шаблон уведомления / наблюдателя принять дальнейшие меры после завершения запроса. Есть моменты в приложении, когда мне нужно, чтобы отменить процесс до того, как запрос закончит делать свое дело, так что есть любой тип протоколы / методы делегата от видения рамки можно использовать для вызова для отмены? Благодарю.
Andre Guerra
1

голосов
1

ответ
318

Просмотры

Decoding JSON with varying key-value pair using Decodable

Я пытаюсь разобрать JSON с помощью декодируемого, который имеет следующую структуру и я бросаю ошибку: не подтверждает в протокол «декодируемые» Структура JSON выглядит следующим образ: {базового = СГД; дата = "2017-12-29"; ставки = {AUD = "0,95769"; BGN = "1,2205"; THB = "24,414"; TRY = "2.8372"; USD = "0,74844"; ZAR = "9,2393"; }; } Обратите внимание, что я сжался размером объекта JSON для удобства чтения. Проблема здесь в том, что ставки все различные пары ключ-значение, которые в отличие от постов здесь и здесь. Мой код до сих пор, как, например: структура Fixer: декодируемые {пусть базы: String пусть дата: String пусть ставки: [AnyObject]}. // в dataTasks делать {позволяет результаты = попробовать JSONDecoder () декодирует (Fixer. Я, от: данные) печать (results.base)} ошибка поймать как NSError {печать (ошибка .localizedDescription)} Было бы полезно, если бы кто-нибудь может посоветовать при такой структуре JSON с различными парами ключ-значение, как следует писать структура? Моя ссылка: видео
Koh
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

голосов
0

ответ
100

Просмотры

Stack view constraints changes top-layer's view width

I have a stack view holding 2 images. One image's width to be lower or equal to 140 and 1:1 ratio Stack view top constraint 20 and trailing constraint 5 When I want to set the stack view leading constraint to 5 (looking at the safe area leading) it enlarges the safe area to a width of 1920 and I have no idea why it does that. It might have something to do with that the total width of the stack view (including the constraints) is smaller than the width of the safe area so it's ignoring the images width constraint and enlarging it to the default size (1920)? Because, when I change the stack view's distribution to fill proportionally instead of fill equally it does obey to the image's width constraint and the safe view's width stays normal. If I am thinking correctly, how can I find a workaround for this? Thanks in advance. EDIT: I was trying to think logically and I found a solution by changing the image's width to GREATER or equal to instead of SMALLER or equal to. I was following a devslopes guide and in that Xcode version (Beta XCode9) it did work, it just gave a warning it wasn't obeying that constraint anymore (I think it was saying that, I just saw the width being red). So it works now, if anyone has this problem following their guide, just do what I said and it will work.
Jeroen Beunckens
1

голосов
1

ответ
182

Просмотры

ChildViewController ломает NavigationViewController в XLPagerTabStrip - Swift

Как я могу программно включатель для детей ViewControllers с использованием XLPagertabStrip. У меня есть ParentViewController имени Parentcontroller в том числе три ChildViewController имени Child1VC, Child2VC, Child3VC. каждый childviewController, имеющие tableViews, я хочу, чтобы перейти от ребенка1 к ребенку 2, когда элемент в поле зрения selected.I таблицы засекретили, чтобы перейти от дочерних контроллеров, но он ломает свои NavigationViewControllers Здесь я добавил код в «didSelectRowAt» метод Child1VC следует : FUNC Tableview (_ Tableview: UITableView, didSelectRowAt indexPath: IndexPath)? {пусть центр = раскадровку .instantiateViewController (withIdentifier: "ParentViewController"), как? ParentViewController self.present (центр !, анимированные: истинное, завершение:
JUNAID TT
1

голосов
0

ответ
55

Просмотры

Невозможно инициализировать универсальный тип с общим параметром метода

Я возиться с родовыми типами в игровых площадках Swift, когда я попытался использовать код ниже: класс Node {пусть значение: Т INIT (_ т: Т) {self.value = т} FUNC преобразования (к типу: U. Тип) -> Node? {Охранник пусть новое = значение, как? U еще {возвращение ноль} возвращение Node (новое)}} Примечание: Этот код является гипотетическим и не предназначен, чтобы сделать что-либо в реальном мире. В строке 12, где я вернуть новый узел из Node.convert (_ :), я получаю сообщение об ошибке: U»не конвертируются в„T“Теперь это кажется довольно странным для меня. В теории, так как мы можем создать узел с любым типом, мы не должны быть в состоянии использовать любой общий тип инициализации? Имеет ли это что-то сделать с помощью вывода типа не в состоянии определить тип?
Caleb Kleveter
1

голосов
0

ответ
453

Просмотры

UICollectionView Перетащите и клетка Капля между CollectionView

Hi I am using KDDragAndDropCollectionView for drag and drop feature between two three different collectionView. Everything is working fine, but I am not able to restrict the movement for particular case. I have three collectionView. The user can drop from A to B and B to C. But He cannot drah and drop from A to C or C to B or B to A. Here is my code. import SlideMenuControllerSwift class MainViewController: NavigationBarViewController,KDDragAndDropCollectionViewDataSource { @IBOutlet weak var inProgressView: UIView! @IBOutlet weak var doneview: UIView! @IBOutlet weak var toDoView: UIView! @IBOutlet weak var doneCollectionView: UICollectionView! @IBOutlet weak var inProgressCollectionView: UICollectionView! @IBOutlet weak var toDoCollectionView: UICollectionView! var drop: UIDropDown! var toDoDataArray = [String]() var inProgressDataArray = [String]() var doneDataArray = [String]() var dragAndDropManager : KDDragAndDropManager? //MARK: - View Life Cycle override func viewDidLoad() { super.viewDidLoad() toDoDataArray.append("A") toDoDataArray.append("B") toDoDataArray.append("C") inProgressDataArray.append("D") doneDataArray.append("B") doneDataArray.append("C") // Do any additional setup after loading the view. self.setUp() self.setupDropDown() self.dragAndDropManager = KDDragAndDropManager(canvas: self.view, collectionViews: [toDoCollectionView, inProgressCollectionView,doneCollectionView]) } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { super.viewWillTransition(to: size, with: coordinator) } //MARK: - Private Method func setupDropDown() { drop = UIDropDown(frame: CGRect(x: 24, y: 80, width: 200, height: 40)) //drop.center = CGPoint(x: self.view.frame.midX, y: self.view.frame.midY) drop.placeholder = "Select Month" drop.options = ["Weekly", "Monthly", "Bi-Annual", "Annual"] drop.didSelect { (option, index) in self.drop.placeholder = option print("You just select: \(option) at index: \(index)") } self.view.addSubview(drop) } func setUp() { //Setup Navigation Bar self.menuIconImage = #imageLiteral(resourceName: "hamIco") self.setNavigationBarButtonItem() self.setNavigationBarItem() } /* // MARK: - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation override func prepare(for segue: UIStoryboardSegue, sender: Any?) { // Get the new view controller using segue.destinationViewController. // Pass the selected object to the new view controller. } */ //MARK: - Navigation Bar Button Action Method //MARK: - Button Action Methods /** Button Action method. Gets called when the left navigation item Parameters: sender - the button on which the event occurred **/ @IBAction func leftBtnAction(sender: UIButton) { self.toggleLeft() } // MARK: - UITableView DataSource abd Delegate func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { print("Step 1 called") if collectionView.tag == 0 { return toDoDataArray.count } else if collectionView.tag == 1 { return inProgressDataArray.count } return doneDataArray.count } // The cell that is returned must be retrieved from a call to -dequeueReusableCellWithReuseIdentifier:forIndexPath: func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { print("Step 2 called") if collectionView.tag == 0 { let cell = collectionView.dequeueReusableCell(withReuseIdentifier: TO_DO_COLLECTION_CELL_ID, for: indexPath) as! ToDoCollectionViewCell cell.isHidden = false if let kdCollectionView = collectionView as? KDDragAndDropCollectionView { if let draggingPathOfCellBeingDragged = kdCollectionView.draggingPathOfCellBeingDragged { if draggingPathOfCellBeingDragged.item == indexPath.item { cell.isHidden = true } } } return cell } else if collectionView.tag == 1 { let cell = collectionView.dequeueReusableCell(withReuseIdentifier: IN_PROGRESS_COLLECTION_CELL_ID, for: indexPath) as! InProgressCollectionViewCell cell.isHidden = false if let kdCollectionView = collectionView as? KDDragAndDropCollectionView { if let draggingPathOfCellBeingDragged = kdCollectionView.draggingPathOfCellBeingDragged { if draggingPathOfCellBeingDragged.item == indexPath.item { cell.isHidden = true } } } return cell } else{ let cell = collectionView.dequeueReusableCell(withReuseIdentifier: DONE_COLLECTION_Cell_ID, for: indexPath) as! DoneCollectionViewCell cell.isHidden = false if let kdCollectionView = collectionView as? KDDragAndDropCollectionView { if let draggingPathOfCellBeingDragged = kdCollectionView.draggingPathOfCellBeingDragged { if draggingPathOfCellBeingDragged.item == indexPath.item { cell.isHidden = true } } } return cell } } // MARK : KDDragAndDropCollectionViewDataSource func collectionView(_ collectionView: UICollectionView, dataItemForIndexPath indexPath: IndexPath) -> AnyObject { print("Step 3 called") if collectionView.tag == 0 { return toDoDataArray[indexPath.item] as AnyObject } else if collectionView.tag == 1 { return inProgressDataArray[indexPath.item] as AnyObject } return doneDataArray[indexPath.item] as AnyObject //return data[collectionView.tag][indexPath.item] } func collectionView(_ collectionView: UICollectionView, insertDataItem dataItem : AnyObject, atIndexPath indexPath: IndexPath) -> Void { print("Step 4 called") if collectionView.tag == 0 { if let di = dataItem as? String { toDoDataArray.insert(di, at: indexPath.item) //data[collectionView.tag].insert(di, at: indexPath.item) } } else if collectionView.tag == 1 { if let di = dataItem as? String { inProgressDataArray.insert(di, at: indexPath.item) //data[collectionView.tag].insert(di, at: indexPath.item) } } else{ if let di = dataItem as? String { doneDataArray.insert(di, at: indexPath.item) } } } func collectionView(_ collectionView: UICollectionView, deleteDataItemAtIndexPath indexPath : IndexPath) -> Void { print("Step 5 called") if collectionView.tag == 0 { toDoDataArray.remove(at: indexPath.item) } else if collectionView.tag == 1 { inProgressDataArray.remove(at: indexPath.item) } else{ doneDataArray.remove(at: indexPath.item) } } func collectionView(_ collectionView: UICollectionView, moveDataItemFromIndexPath from: IndexPath, toIndexPath to : IndexPath) -> Void { print("Step 6 called") if collectionView.tag == 0 { let fromDataItem: String = toDoDataArray[from.item] toDoDataArray.remove(at: from.item) toDoDataArray.insert(fromDataItem, at: to.item) } else if collectionView.tag == 1 { let fromDataItem: String = inProgressDataArray[from.item] inProgressDataArray.remove(at: from.item) inProgressDataArray.insert(fromDataItem, at: to.item) } else{ let fromDataItem: String = doneDataArray[from.item] doneDataArray.remove(at: from.item) doneDataArray.insert(fromDataItem, at: to.item) } } func collectionView(_ collectionView: UICollectionView, indexPathForDataItem dataItem: AnyObject) -> IndexPath? { print("Step 7 called") if collectionView.tag == 0 { if let candidate : String = dataItem as? String { for item : String in toDoDataArray { if candidate == item { let position = toDoDataArray.index(of: item)! // ! if we are inside the condition we are guaranteed a position let indexPath = IndexPath(item: position, section: 0) return indexPath } } } } else if collectionView.tag == 1 { if let candidate : String = dataItem as? String { for item : String in inProgressDataArray { if candidate == item { let position = inProgressDataArray.index(of: item)! // ! if we are inside the condition we are guaranteed a position let indexPath = IndexPath(item: position, section: 0) return indexPath } } } } else{ if let candidate : String = dataItem as? String { for item : String in doneDataArray { if candidate == item { let position = doneDataArray.index(of: item)! // ! if we are inside the condition we are guaranteed a position let indexPath = IndexPath(item: position, section: 0) return indexPath } } } } return nil } } //MARK: - Extension written for Slide the Menu extension MainViewController : SlideMenuControllerDelegate { func leftWillOpen() { print("SlideMenuControllerDelegate: leftWillOpen") } func leftDidOpen() { print("SlideMenuControllerDelegate: leftDidOpen") } func leftWillClose() { print("SlideMenuControllerDelegate: leftWillClose") } func leftDidClose() { print("SlideMenuControllerDelegate: leftDidClose") } func rightWillOpen() { print("SlideMenuControllerDelegate: rightWillOpen") } func rightDidOpen() { print("SlideMenuControllerDelegate: rightDidOpen") } func rightWillClose() { print("SlideMenuControllerDelegate: rightWillClose") } func rightDidClose() { print("SlideMenuControllerDelegate: rightDidClose") } }
User
1

голосов
0

ответ
208

Просмотры

Как установить выравнивание UIAlertController программно в стремительной 3.0?

Я взял UIAlertController, чтобы отобразить сообщение об ошибке. И его выравнивание по умолчанию находится в центре экрана. Но я хочу, чтобы установить его в соответствие с любым положением какого-либо конкретного вида. // Здесь код для создания UIAlertController программно пусть предупреждение = UIAlertController (название: "название", сообщение: "сообщение", preferredStyle: UIAlertControllerStyle.alert) alert.setValue (self.setFontStyle (текст: название, TextSize: 16, TextStyle : "HelveticaNeue-Medium"), forKey: "attributedTitle") alert.setValue (self.setFontStyle (текст: сообщение, TextSize: 12, TextStyle: "HelveticaNeue"), forKey: "attributedMessage") пусть cancelAction = UIAlertAction (название: "Отклонить", стиль: .Default) {(результат: UIAlertAction) -> Пустота в alert.dismiss (анимированный: правда, завершение: ноль)} предупреждение.
dang
1

голосов
1

ответ
107

Просмотры

Аналитика не распознан

Был после руководства по установке Firebase. Процесс установки работал, но мой проект не распознает тип Analytics: Analytics.logEvent // использование неразрешенного идентификатора «Analytics» Xcode автозаполнения показывает AnalyticsConfiguration, но ничего другого. В качестве проверки вменяемости, вот что я сделал, чтобы создать свой проект: Используйте cocoapods для извлечения Firebase / Ядро Убедитесь, что я с помощью файл .xcworkspace Добавлена ​​GoogleService-Info.plist для моего проекта в моем приложении делегат, импорт Firebase и вызов FirebaseApp.configure ()
Kelvin Lau

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