Tag: swift

基于另一个视图控制器更改viewController BG颜色

所以我需要一些项目的帮助。 我有一个简单的标签栏SVC第一个视图是一个计时器,第二个是设置页面。 在设置页面上,我设置了一个带有颜色数组的结构,然后当用户单击一个button时,数组中的随机颜色被调用并应用到后台。 这部分工作正如我的意图。 我想要做的是将这种颜色应用到第二个视图的背景。 这是设置代码 import UIKit import GameKit public var randomColor = UIColor() class SettingsViewController: UIViewController { @IBOutlet weak var pushMe: UIButton! let colorProvider = BackgroundColorProvider() @IBAction func pushMeChange(_ sender: Any) { randomColor = colorProvider.randomColorBG() print (randomColor.superclass as Any) view.backgroundColor = randomColor } struct BackgroundColorProvider { let colors = [ UIColor(red: 90/255.0, green: […]

在NSUserDefaults中保存NSManagedObject

大家好(抱歉我的英文不好,我是法文), 我试图把我NSManagedObject到NSUserDefaults检索它的关系。 基本上我用NSCoding和我已经实现了所需的方法,但是因为它是NSManaged对象,init方法的签名是:init(实体:NSEntityDescription,insertIntoManagedObjectContext上下文:NSManagedObjectContext?)。 消息是“NSInvalidArgumentException”,原因是:“非法尝试在不同上下文中的对象之间build立关系”shop“ 如果我在Address: self.shop = shop注释这行,它会一次又一次地创build我的实体。 这是我的代码: 把商店放在NSUserDefaults : let selectedShop = shopFetchedResultsController!.fetchedObjects![indexPath.row] as! Shop let encodedShop = NSKeyedArchiver.archivedDataWithRootObject(selectedShop) NSUserDefaults.standardUserDefaults().setObject(encodedShop, forKey: "currentShop") 并检索它: let encodedShop = NSUserDefaults.standardUserDefaults().objectForKey("currentShop") as! NSData let currentShop = NSKeyedUnarchiver.unarchiveObjectWithData(encodedShop) as! Shop 实体店: import Foundation import CoreData @objc(Shop) class Shop: NSManagedObject, NSCoding { @NSManaged var name: String @NSManaged var phoneNumber: […]

如何在UITableViewCell中创build具有dynamic高度的视图网格

我想创build一个盒子的网格,这是在我的UITableViewCell具有固定宽度和高度的Label 。 如何才能做到这一点? 我要这个: 我得到这个: 我尝试在UITableViewCell使用UICollectionView ,但我遇到了两个问题: UITableViewCell的高度不会根据有多less项目而dynamic改变 项目之间的空间不能准确设置(因为你只能定义一个minCellSpacing值) 我的问题: 什么是最好的方式来创build这个Label的网格,使UITableViewCell的高度会根据项目的数量dynamic变化,所以我可以准确地设置项目之间的间距? (如果没有UICollectionView ,这可以很好,但它不是一个要求)

在主视图Swift中embedded子视图

如果你看这个图像 (我不想上传它,因为它不属于我),你会看到在iPad的设置应用程序的主uiview控制器内看起来是一个uiview。 我的问题是,如何复制这个编程? 换句话说,我如何在另一个embeddedUIView? 这就是我所知道的, 根据我的研究,这被称为“子视图”。 它是否正确? 我已经创build了一个UIView与我想要在界面生成器中的适当的元素。 它目前不是子视图,而是与我的主要观点在同一级别上。 除了Obj-C,我发现了同样的确切问题 ,而不是我的语言(Swift)。 这是我需要的: 点击button后,如何在swift中编程生成子视图? 由于这个子视图在UI元素方面非常复杂,我希望能够在界面构build器中进行devise。 以下是我到目前为止: @IBAction func buttonPressedSpawnSubview(sender: AnyObject) { //Open a subview from Interface builder. } @IBAction func closeButtonPressedSpawnSubview(sender: AnyObject) { //kill the subview. 有人可以帮我弄清楚如何填写注释行吗?

带SWRevealViewController的Exc_bad_指令

背景我的应用程序有一个MainViewController与UIButton导致另一个ViewController按下时。 在第二个ViewController是一个UIBarButtonItem它有一个“后退”inheritance到MainViewController。 一切都工作得很好,直到现在当我编程一个滑出菜单的SWRevealViewController的帮助下,我遵循这个Jared Davidson教程https://www.youtube.com/watch?v=8EFfPT3UeWs (简单,一般和简单) 问题滑出菜单完美地工作,但现在当按下第二个ViewController中的“返回”button崩溃的应用程序,由于 EXC_BAD_INSTRUCTION(code = EXC_I1386_INVOP,subcode = 0x0) 从MainViewController文件中的以下代码中,查看关于滑出菜单的平移手势。 码 这是我的MainViewControllers关于我的滑出菜单的代码。 它完美的工作,但它与第二个ViewController简单的“后退”segue推断。 @IBOutlet weak var Open: UIBarButtonItem! override func viewDidLoad() { super.viewDidLoad() Open.target = self.revealViewController() Open.action = Selector("revealToggle:") self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer()) //THIS IS THE CODE WHERE THE ERROR ALEERT OCCURS } 当最后一行代码被删除时,“返回”再次继续,但显然不是滑出菜单。 帮助是否可以指定平移手势代码只有MainViewController及其滑出菜单,让“后退”segue只显示MainViewController像以前和/或“忽略”这行代码。 或者是否有可能以其他方式分开这两个,并避免从第二个ViewController(回到MainViewController)的“返回”segue按下时我的应用程序崩溃? 在此先感谢传说。

Swift pull重新加载表中的对象而不是更新

我从分析导入数据,并试图添加“拉刷新”function,所以如果有人添加一个对象,它将添加到tableview,但现在它复制了什么已经在tableview。 显然,如果没有添加任何东西,我什么都不应该改变。 许多帮助将是最重要的 这是我的代码如下 var refresher: UIRefreshControl! func Refresh() { let query = PFQuery(className: "Events") query.orderByAscending("Date") query.findObjectsInBackgroundWithBlock { (objects, error) -> Void in if error == nil { // query successful – display number of rows found print("Successfully retrieved \(objects!.count) Events") if let objects = objects { for object in objects { self.postedEvents.append(object.objectForKey("Name") as! String) […]

Swift:使用SearchBarsearch这两个部分,而不是合并它们

使用Swift 3,该应用程序是使用PHP和JSON从MYSQL数据库读取的博客阅读器。 目前我的SearchBar没有做我想做的事情,我在mainArray(第一部分)中search'All'范围。 当它被过滤时,被过滤的对象被移动到filteredArray。 我同时做了这个,因为我无法弄清楚如何让它做我想做的事情。 它应该做的是这样的,当用户search一个对象时,我希望对象显示在mainArray或者followedArray中,而不是将它移动到不同的数组,所以它不会合并。 基本上过滤tableview,而不是删除任何部分或组合任何对象,因为它会混淆用户通过不知道该对象在哪个部分,当然,确保范围栏正常工作。 学习如何实施一个search栏,以便当我尝试进一步提高水平时,可以看到我的麻烦。 谢谢! SearchBar和范围代码 let searchController = UISearchController(searchResultsController: nil) override func viewDidLoad() { // Search Bar searchController.searchResultsUpdater = self searchController.dimsBackgroundDuringPresentation = false definesPresentationContext = true myTableView.tableHeaderView = searchController.searchBar searchController.searchBar.backgroundColor = UIColor.white searchController.searchBar.barTintColor = UIColor.white // Scope Bar searchController.searchBar.scopeButtonTitles = ["All", "Released", "Unreleased", "Free"] searchController.searchBar.delegate = self } // Title […]

iOS Swift 3:从共享扩展共享数据到主机应用程序

您好,我已经实现了我的应用程序的共享扩展,从图库中挑选图像并发送到特定的视图。 现在的问题是当我试图保存图像arrays(从图库中挑选的图像) func manageImages() { let content = extensionContext!.inputItems[0] as! NSExtensionItem let contentType = kUTTypeImage as String for (index, attachment) in (content.attachments as! [NSItemProvider]).enumerated() { if attachment.hasItemConformingToTypeIdentifier(contentType) { attachment.loadItem(forTypeIdentifier: contentType, options: nil) { data, error in if error == nil, let url = data as? URL { do { let imageData = try Data(contentsOf: url) […]

为什么在这个IOS代码中仍然会出现双击?

背景 – 我有一个标注(自定义视图添加到注释视图)的地图(MapKit) – 我已经设法确保在标注视图上做出的“长按”手势没有被拾取(见下面,使用“ shouldReceiveTouch“) 问题我不能做的是同样的事情(即忽略)在标注视图上双击,因为MapKit地图仍然以某种方式挑选并放大。我试着把双击手势放到陷阱它,但它似乎并没有工作。 Mapkit视图委托代码 手势识别器的设置 // Gesture Recogniser (Long Press) let longPressGR = UILongPressGestureRecognizer(target: self, action: "longPressAction:") longPressGR.minimumPressDuration = 1 longPressGR.delegate = self self.mapView.addGestureRecognizer(longPressGR) // Gesture Recogniser (Double Tap) let doubleTapGR = UITapGestureRecognizer(target: self, action: "doubleTapAction:") doubleTapGR.numberOfTapsRequired = 2 doubleTapGR.delegate = self self.mapView.addGestureRecognizer(doubleTapGR) 为UIGestureRecognizerDelegate实现“shouldReceiveTouch” extension GCMapViewHelper : UIGestureRecognizerDelegate { func gestureRecognizer(gestureRecognizer: […]

在UIScrollView Swift中禁用垂直滚动

(不要把这个问题标为重复,我读了很多问题,但是我没有find我问题的答案。) 我的问题是以下几点:我有一个应该只水平滚动的UIScrollView 。 在这里它垂直滚动20px(奇怪的事实:它看起来与状态栏高度相同)。 我试图打印的内容大小,y偏移量和UIScrollView的高度像这样: print(horizontalScrollView.contentSize) print(horizontalScrollView.bounds.size.height) print(horizontalScrollView.contentOffset.y) 我得到这个: (1125.0, 667.0). // scrollview content size 667.0. // scrollview height -20.0 // content offset (y) 我知道scrollView内容大小的高度必须是<= scrollView高度。 正如你所看到的,是这样的。 我使用约束来把3 UIViewController水平堆叠。 除了这个问题,它运作良好。 另一个事实:它在Swift 4和Xcode 9之前工作…我不知道这是否是原因。 你有什么想法吗? 在此先感谢您的帮助。