Tag: 快速

Tableview简单的显示值

我是一个swift3的stduent和非常初学者。 在这里,我只想在tableview中显示“First”,“Second”,“Third”,看起来不太好。 来自YouTube的教程是swift2,我试图转换成swift3。 我认为这个问题与代码有关: let Cell = self.tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as UITableViewCell 我努力search像https://www.codeschool.com/blog/2016/09/14/evolving-to-swift-3/,但我不知道发生了什么。 Xcode无法检测到代码的任何错误,它可以运行。 在iPhone模拟器的桌面视图是空的或整个屏幕是黑色的。 我使用导航控制器来实现它。 表视图单元格中viewcontoller和iderntifer中的类在根视图控制器中设置良好。 请帮帮我。 谢谢。 import Foundation import UIKit class ViewController: UITableViewController { var Array = [String]() override func viewDidLoad() { super.viewDidLoad() Array = ["First","Second","Third"] } override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return Array.count } […]

为什么instantiateViewContoller是必要的?

为什么我不能像resultVC = ResultViewController()那样使用sth来创build视图控制器对象,而不是使用下面的方法。 let storyboard = UIStoryboard (name: "Main", bundle: nil) let resultVC = storyboard.instantiateViewController(withIdentifier: "ResultViewController") as! ResultViewController // Communicate the match resultVC.match = self.match self.navigationController?.pushViewController(resultVC, animated: true)

确定animation时的约束常量

我有一个视图控制器的顶部和底部视图设置如下: —————- | | | | | | | | —————- < constraint with constant of 250 | | | | | | | | —————- 在IB中使用AutoLayout,我将每个视图设置为符合父级的外部,并给定中心约束250的常量。 然后我有一个IBOutlet我可以animation的中心约束: // MARK: – View Containers @IBOutlet weak public var topView: UIView! @IBOutlet weak public var bottomView: UIView! // MARK: – Constraints @IBOutlet weak var splitViewDividerConstraint: NSLayoutConstraint! 和animation: […]

两个UIPickerViews和不同的组合导致不同的照片

我很新的迅速Xcode,并希望对UIPickerView一些帮助。 我正在尝试创build两个UIPickerViews,一个名为“From”,另一个名为“To”。 “From”包含A,B,“To”包含B,C 基本上,如果“From”是A并且“To”是B,那么汽车的照片将出现在相同的viewController上。 如果“发件人”是B,“收件人”是B,则会出现草莓照片等等。 任何人都可以给我任何提示如何做到这一点? 我只设法创build了第一个UIPickerView。 import UIKit class ViewController: UIViewController,UIPickerViewDelegate, UIPickerViewDataSource { @IBOutlet var Picker1:UIPickerView! var Array = ["A","B","C"] override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib Picker1.delegate = self Picker1.dataSource = self } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any […]

如何从当前设备的MCSession中检测到非程序化的断开连接?

为了避免出现XY问题,我会先解释一下情况。 我正在开发一个游戏,其中多个设备可以连接到一个多人游戏。 我正在使用Multipeer连接。 游戏支持2-4名玩家。 现在我需要处理一名玩家与所有其他玩家断开的情况。 除非只有一个玩家离开,否则当游戏者断开连接时游戏仍然应该继续。 但是,我希望向所有仍然连接的玩家显示一条提示,告知“XXX已断开连接”并“杀死”断开连接的玩家,另一个提醒断开连接的玩家说“断开连接”并解散游戏视图控制器。 玩家可以通过以下方式断开连接: 按下退出button closures屏幕(这使得应用程序进入显然停止所有Mutipeer连接的背景) 打开飞行模式 离别人太远了 除了第一种方式之外的任何东西都不能通过编程来控制。 我目前可以执行这样的第一个: 当用户按下“退出”button时,在调用session.disconnect()之后,我可以显示消息“您已断开连接”。 在sessionPeerDidChangeState委托方法中,我可以检测到一个玩家已经断开连接,我可以在那里显示“XXX已断开连接”警报。 但是,我不知道如何处理其他情况。 在我自己的testing过程中,我发现如果用户closures屏幕, sessionPeerDidChangeState委托方法甚至不会被调用。 即使被调用,我该如何判断设备是否被断开? 我需要知道这一点,以显示适当的信息,并决定是否“杀死”断开的玩家。 我明白,这是不可能的,由两个同行组成的会议,因为不可能确定“谁与谁断开”。 游戏无法继续只有一个球员,所以我只是要显示“所有其他球员已经离开”警惕,并解雇游戏视图控制器,如果我看到self.session.connectedPeers是空的。 我只关心有3名选手和1名选手离开的情况。 我应该能够知道哪个玩家是断开连接的,但我不知道如何。

主线程上的OAuthSwift请求callback

我用我的iOS应用程序使用swift 2.0写OAuthSwift(v 0.5.1)。 我使用Grand Central Dispatch在后台线程中运行一些代码。 这段代码使用OAuthSwift向服务器发出请求。 但是请求的callback在主线程上运行。 有没有一种方法可以在发送请求的同一线程上接收callback? dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0)){ //Here run in background thread var client = OAuthSwiftClient(consumerKey: xxx, consumerSecret: yyyy) client.get(url, parameters:[:], headers: header_array, success:{(data, response)-> Void in //Success code here run on main thread }) { (error) -> Void in //Error code here } }

Swift:主界面冻结即使一切都在asynchronous线程? URLsession?

我仍然得到了asynchronous/后台线程的挂钩,但我不知道什么是这个调用。 基本上我正在build立一个播客播放器,在一个URLSession中从一个RSS feed中传输audiom4as。 我的问题是尽pipe把所有我能想到的,尤其是实际的AudioPlayerManager.shared.play(asynchronousfunc,UIbutton仍然冻结时,轨道是“初始化”,意思是试图播放。这是一个问题,因为它冻结整个应用程序,如果这些糟糕的连接,或者你有什么 – 这个UI挂起总是会发生,但是不同的时间,即使RSS提要没有时间parsing,没有挂起。 我正在使用GitHub库( https://github.com/tschob/AudioPlayerManager )来执行此操作。 这里是我每次查看(它的一个标签栏VC选项卡)出现的代码,它调用startup funcasynchronous: override func viewDidAppear(_ animated: Bool) { { //these should always happen, MUST BE in view did appear loadIndicator.isHidden = false overallNavigator.animateMediaBar(inPos: false) if(originalUrl != currentTrackUrl) //new m4a { print("NEW TRACK") trackStatus = .Initializing playModeStreaming = true } if(adURL == "" || adURL == nil) […]

从两点创build一个大括号曲线

我试图从两个点Swift中创build一个大括号。 这个想法很好,直线,因为它目前不是dynamic的。 我的问题在于根据p1和p2点的位置finddynamic控制点和中心。 这是我现在的代码: override func viewDidLoad() { super.viewDidLoad() let path = UIBezierPath() let p1 = CGPointMake(100, 100) let p2 = CGPointMake(300, 100) let c1 = CGPointMake(150, 80) let c2 = CGPointMake(250, 80) var midPoint = midPointForPoints(p1, p2: p2) var midP1 = midPoint midP1.x -= 10 var midP2 = midPoint midP2.x += 10 midPoint.y -= […]

使用Swift脚本计算iOS框架的大小

我正在写一个Swift脚本来计算iOS框架的文件大小。 不过,我有不可思议的结果。 在一个框架中,我有这个文件结构,如Finder所示: /{FrameworkName}.framework/Modules/{FrameworkName}.swiftmodule/ /{FrameworkName}.framework/Modules/{FrameworkName}.swiftmodule/x86_64.swiftmodule /{FrameworkName}.framework/Modules/{FrameworkName}.swiftmodule/x86_64.swiftdoc 然而! 如果我运行代码来计算我的Swift脚本中的文件大小,当我循环浏览这些文件时,我看到这些文件: /{FrameworkName}.framework/Modules/{FrameworkName}.swiftmodule/ /{FrameworkName}.framework/Modules/{FrameworkName}.swiftmodule/arm64.swiftmodule /{FrameworkName}.framework/Modules/{FrameworkName}.swiftmodule/arm.swiftmodule /{FrameworkName}.framework/Modules/{FrameworkName}.swiftmodule/arm64.swiftdoc /{FrameworkName}.framework/Modules/{FrameworkName}.swiftmodule/arm.swiftdoc 正如你所看到的,这些文件似乎分裂成两个不同的文件,每个架构都没有在Finder中显示。 这里的问题是,这两个arm和arm64文件是相同的大小计数,因此我的文件大小的iOS框架的双重计数! 现在我认为这可能是一个Swift循环如何通过文件结构的错误,但也许我做错了什么。 这是我的文件大小计算代码: var bool: ObjCBool = false if FileManager.default.fileExists(atPath: documentsDirectoryURL.path, isDirectory: &bool), bool.boolValue { var folderSize = 0 FileManager.default.enumerator(at: documentsDirectoryURL, includingPropertiesForKeys: [.<key_here>], options: [])?.forEach { folderSize += (try? ($0 as? URL)?.resourceValues(forKeys: [.<key_here>]))??.<key_here> ?? 0 } return Int64(folderSize) }

Swift Alamofire发送XML请求并接收XML响应

您好,我正在从目标C到Swift。 我试图发送XML请求,并收到XML响应。 我们如何能与Alamofire做到这一点。 似乎只能为JSON做? 我的终点:“ https://prdesb1.singpost.com/ma/GetItemTrackingDetails ” 我的示例请求正文(xml): <ItemTrackingDetailsRequest xmlns="http://singpost.com/paw/ns"> <ItemTrackingNumbers> <TrackingNumber>SMT0000000628</TrackingNumber> </ItemTrackingNumbers> </ItemTrackingDetailsRequest> 答案应该是 <ItemTrackingDetailsResponse xmlns="http://singpost.com/paw/ns" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> <ItemsTrackingDetailList> <ItemTrackingDetail> <TrackingNumber>SMT0000000628</TrackingNumber> <TrackingNumberFound>true</TrackingNumberFound> <AlternativeTrackingNumber/> <TrackingNumberActive>true</TrackingNumberActive> <PostingDate/> <InsuredValue/> <InsuredSDR/> <Weight/> <ExpressInd/> <ItemCategory/> <Content/> <PreadviceDate/> <ReceptacleID/> <OriginalCountry>Singapore</OriginalCountry> <DestinationCountry>Singapore</DestinationCountry> <ItemType>Speedpost</ItemType> <DeliveryStatusDetails> <DeliveryStatusDetail> <StatusDescription>Recovered item from POPStation for service recovery</StatusDescription> <Location>SPEEDPOST SERVICE CENTRE</Location> <BeatNo/> <Date>2016-08-22T16:35:30</Date> <AceDate>20160822 163530</AceDate> </DeliveryStatusDetail> <DeliveryStatusDetail> <StatusDescription>Delivered […]