我有一个UICollectionView,用户可以选择多个单元格.跟踪选择了哪些单元格有点困难,所以我需要一些方法来点击单元格时突出显示/创建边框.
码:
func collectionView(collectionView: UICollectionView, shouldSelectItemAtIndexPath indexPath: NSIndexPath) -> Bool {
addToList.append(objectsArray[indexPath.row])
return true
}
Run Code Online (Sandbox Code Playgroud) 我一直在互联网上学习很多教程,学习如何设置复杂功能.我按照预期设置并发症没有问题.
直到初始时间表条目到期.12个小时后,我不知道如何更新它以保持并发症的生效.我将分享下面的所有内容,希望有人可以帮我填写.
在这里,我为要在复杂化中显示的数据创建变量.
struct data = {
var name: String
var startString: String
var startDate: NSDate
}
Run Code Online (Sandbox Code Playgroud)
以下数组是此数据的容器.
var dataArray = [data]
Run Code Online (Sandbox Code Playgroud)
这样可以在手表锁定时显示复杂功能.
func getPrivacyBehaviorForComplication(complication: CLKComplication, withHandler handler: (CLKComplicationPrivacyBehavior) -> Void) {
handler(.ShowOnLockScreen)
}
Run Code Online (Sandbox Code Playgroud)
这允许在复杂化上前进时间旅行.
func getSupportedTimeTravelDirectionsForComplication(complication: CLKComplication, withHandler handler: (CLKComplicationTimeTravelDirections) -> Void) {
handler([.Forward])
}
Run Code Online (Sandbox Code Playgroud)
在这里,我将时间线的开始时间设置为等于现在.
func getTimelineStartDateForComplication(complication: CLKComplication, withHandler handler: (NSDate?) -> Void) {
handler(NSDate())
}
Run Code Online (Sandbox Code Playgroud)
在这里,我将时间线的结束时间设置为从现在开始等于12小时.
func getTimelineEndDateForComplication(complication: CLKComplication, withHandler handler: (NSDate?) -> Void) {
handler(NSDate(timeIntervalSinceNow: (60 * 60 * 12)))
}
Run Code Online (Sandbox Code Playgroud)
在这里,我创建了复杂的模板.这是为用户在浏览手表上的所有复杂情况时看到我的并发症时显示的样本数据.
func getPlaceholderTemplateForComplication(complication: CLKComplication, withHandler …
Run Code Online (Sandbox Code Playgroud) 这是我的应用程序的流程:
首先,TableView设置为隐藏.屏幕中央有一个UITextField.当用户输入内容并点击Go时,运行以下代码:
self.view.layoutIfNeeded()
UIView.animateWithDuration(0.5, animations: {
self.textFieldConstraint.constant = -230
self.tableView.hidden = false
self.goButton.hidden = true
self.view.layoutIfNeeded()
}, completion: nil)
Run Code Online (Sandbox Code Playgroud)
此时,将填充tableview.选择行时,我需要操作填充它的数据.
但是,当我点击一个单元格时绝对没有任何反应.
我究竟做错了什么?
我的TableView代码在这里:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell: SearchResultsTableViewCell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! SearchResultsTableViewCell
cell.label.text = searchResultsNames[indexPath.row]
return cell
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return searchResultsUrls.count
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
print("HELLO")
}
Run Code Online (Sandbox Code Playgroud)
而且,我已正确设置dataSource和委托.
我还想澄清一下tableView是否正确填充和滚动; 当我点击一个单元格时它就不会做任何事情.
更新:
我发现由于某种原因,我可以在按住它们时选择细胞.这不是我想要的,所以有人知道如何解决这个问题吗?
我有一系列颜色可以填充饼图作为游戏微调器.我不希望相同的颜色彼此相邻,在圆圈中形成一个巨大的块.
我的数组看起来像这样:
var colors = ["blue", "red", "green", "red", "blue", "blue", "blue", "green"]
Run Code Online (Sandbox Code Playgroud)
问题当然是有三个蓝调在一起.Swift中是否有任何内容可以让我在总分布中平均(或尽可能接近)扩散值并避免它们相邻?
我可以使用以下代码测试匹配,但重新排列它们会证明有点困难.
var lastColor = "white"
for color in colors {
if color == lastColor {
print("match")
}
lastColor = color
}
Run Code Online (Sandbox Code Playgroud)
更新:
为了制作我的colors
数组,我从每种颜色的空格数开始.它看起来像这样:
let numberOfReds = 2
let numberOfGreens = 2
let numberOfBlues = 4
let spaces = numberOfReds + numberOfGreens + numberOfBlues
for _ in 0..< spaces {
if numberOfReds > 0 {
numberOfReds -= 1
colors.append("red")
}
if numberOfGreens > 0 { …
Run Code Online (Sandbox Code Playgroud) 我正在开发一个允许用户创建一种配音的应用程序.有一个音频文件播放,用户可以在某些时刻点击插入声音(有点像检查按钮.)我想知道如何捕获最终产品.
直接从iPhone捕获音频似乎是最简单的路线,因为用户已经听到成品的制作.但是,我找不到任何关于如何做到这一点.如果不可能,有什么建议吗?
我没有问题实际执行segue,但是当我这样做时,我的标签栏从视图的底部消失.我已经从TabBarController1到TabBarController2创建了一个故事板segue.
我已经为Objective-C找到了很多答案,但没有为Swift找到答案.
这是执行segue的代码:
if requestsArray.count == 0 {
self.performSegueWithIdentifier("offerSegue", sender: self)
} else {
self.performSegueWithIdentifier("confirm1", sender: self)
}
Run Code Online (Sandbox Code Playgroud) 我有一个 iPhone 应用程序,可将数据从 iPhone 应用程序直接发送到表盘以显示为复杂功能。
我使用该WatchConnectivity
框架创建了一个WCSession
将数据从手机发送到手表的方法。
我的数据存储在字典中,并使用WCSession
的transferCurrentComplicationUserInfo
方法发送到手表。(这种方法每天可以使用 50 次左右,我知道这一点 - 这不是问题。)
该transferCurrentComplicationUserInfo
方法似乎在我第一次尝试发送数据时起作用。
我的问题是我的 iPhone 应用程序打算在一个会话中多次调用这个函数,而且它只能在第一次可靠地工作。
当我发送第二组数据时,第一组数据仍保留在并发症上。通常,当我发送第三组时,会出现第二组。有时第二组永久出现,有时只出现一秒钟,然后显示第三组。
这是不一致的,这就是我遇到的问题。
有什么我设置不正确的吗?
代码:
//iPhone code to send data to Apple Watch:
func sendComplication(complication: Complication) {
guard let session = session else {
delegate?.failedToSendComplication(reason: "Could not connect to your Apple Watch.")
return
}
guard let context = convertComplicationToDictionary(complication: complication) else {
delegate?.failedToSendComplication(reason: "Couldn't cast complication to a dictionary.")
return
}
if session.remainingComplicationUserInfoTransfers > 0 { …
Run Code Online (Sandbox Code Playgroud) apple-watch watchkit clockkit apple-watch-complication watchconnectivity
不知道在哪里问这个,所以我想从这里开始.
我有两个视频剪辑.视频剪辑都没有任何音频.
通过AVCaptureSession从iPhone的相机捕获一个视频片段.
第二个视频剪辑本地存储在设备上.
我希望以完全播放捕获视频的方式合并两个视频,然后立即播放第二个视频剪辑的一秒钟.然后我将新的视频剪辑与预定的音频文件合并,然后转到我的共享菜单,我将其保存到相机胶卷.
最终结果与相机胶卷完全一致.但是,当我将视频分享到Facebook时,第一个视频剪辑会变形为绿色或有时灰色的屏幕.当时间到来时,第二个剪辑可以正常播放.整个过程中音频都很好.
我不知道造成这种情况的原因.
有帮助吗?
func mergeVideos() {
let videoAsset = AVAsset(URL: recordedVideoURL)
let videoAsset2 = AVAsset(URL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("Credits", ofType: "mp4")!))
let audioAsset = AVAsset(URL: finalAudioURL)
// 1 - Create AVMutableComposition object.
let mixComposition = AVMutableComposition()
// 2 - Audio track
do {
let audioTrack = mixComposition.addMutableTrackWithMediaType(AVMediaTypeAudio, preferredTrackID: 0)
try audioTrack.insertTimeRange(CMTimeRangeMake(kCMTimeZero, audioAsset.duration + CMTime(seconds: 1, preferredTimescale: 30)), ofTrack: audioAsset.tracksWithMediaType(AVMediaTypeAudio)[0], atTime: kCMTimeZero)
} catch {
print(error)
}
// 3 - Video tracks
do {
let videoTrack = mixComposition.addMutableTrackWithMediaType(AVMediaTypeVideo, …
Run Code Online (Sandbox Code Playgroud) 每次我尝试为我的应用程序提交更新时,都会收到此错误:
除了.Swift文件,故事板和plists之外,我从应用程序中删除了所有资产.所以我知道该应用程序不超过50MB.然而,无论我从应用程序中删除了什么,我仍然会收到此错误.
我重新启动了Xcode,重新启动了我的Mac,更改了内部版本号,删除了资产,并且没有任何变化.
有人有什么想法吗?
我的第一个带有 Firebase 的大型应用程序刚刚启动,但遇到了一个问题 - 我的下载带宽很快就用完了。
我研究了几个缓存数据的选项。我希望缓存的数据仅在它是最新的时才使用。如果自创建缓存以来 Firebase 上的数据已更新,我想重新下载所有数据。
我不希望在一个会话中多次更新数据。所以我想在获取新数据后立即删除观察者。
我尝试了两件事,但我不完全确定它们是如何工作的。
FIRDatabase.database().persistenceEnabled = true
Run Code Online (Sandbox Code Playgroud)
启用持久性很棒,因为只需一行代码即可缓存从 Firebase 下载的所有内容。即使应用程序未连接到互联网,它也会提取缓存数据并照常开展业务。
但我的问题是:当 Firebase 上的数据更新时,缓存会更新吗?情况似乎并非如此。
当我进入并更改 Firebase 上的值并重新启动应用程序时,它只给我缓存的值,而不是更新的值。
那么我试试这个:
ref.keepSynced(true)
Run Code Online (Sandbox Code Playgroud)
这似乎有效。当我重新启动应用程序时,我会得到更新的值。
但是我的问题是:应用程序是在每次应用程序启动时(我不想要这个)还是在需要更新时下载数据?
swift ×8
apple-watch ×3
clockkit ×2
ios ×2
distribution ×1
facebook ×1
firebase ×1
random ×1
segue ×1
uitableview ×1
video ×1
watchkit ×1
watchos-2 ×1
xcode8 ×1