我有UITableViewController
一个UIImageView
.内容加载以下简单代码.
@IBOutlet weak var avatarImageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
updateUI()
}
func updateUI() {
backendless.userService.currentUser.retrieveProperties()
avatarImageView.layer.cornerRadius = avatarImageView.frame.size.width/2
avatarImageView.layer.masksToBounds = true
let imgURL = NSURL(string: (backendless.userService.currentUser.getProperty("Avatar") as? String)!)
avatarImageView.sd_setImageWithURL(imgURL)
tableView.reloadData()
}
Run Code Online (Sandbox Code Playgroud)
ImageView不会出现.
但是如果我删除以下代码,UIImageView将被正确设置和显示.
avatarImageView.layer.cornerRadius = avatarImageView.frame.size.width/2
avatarImageView.layer.masksToBounds = true
Run Code Online (Sandbox Code Playgroud)
我错过了什么?非常感谢帮助:
Xcode 8.0
斯威夫特2.3
ImageView的Contrains设置为120*120
sd_setImageWithURL
= pod 'SDWebImage'
如何使用相机拍照或从照片库中选择图像以便能够在imageView中显示?
任何有关这方面的帮助将不胜感激.
我已经从下到上阅读了这个线程(以及类似的其他线程),但它根本不符合我的需求。
我在一个UIViewController
里面UIPageViewController
有一个UINavigationController
. 导航到第二个 ViewController。导航到第 3 个 ViewController 并希望返回到第 2 个传递数据的 ViewController。
我目前的代码:
protocol PassClubDelegate {
func passClub(passedClub: Club)
}
class My3rdVC: UIViewController {
var clubs: [Club] = []
var passClubDelegate: PassClubDelegate?
....
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let club = clubs[indexPath.row]
self.passClubDelegate?.passClub(club)
navigationController?.popViewControllerAnimated(true)
}
Run Code Online (Sandbox Code Playgroud)
我的第二个 VC:
class My2ndVC: UIViewController, PassClubDelegate {
var club = Club()
func passClub(passedClub: Club) {
SpeedLog.print("passClub called \(passedClub)")
club = passedClub
}
Run Code Online (Sandbox Code Playgroud)
passClub
不叫。我确定这是因为我没有将委托设置为 …
永远不会使用不可变值'textfieldInt'的初始化; 考虑将赋值替换为'_'或删除它和textfield2Int
我为textfieldInt收到两次警告
这是我的所有代码:
class ViewController: UIViewController {
@IBOutlet weak var textField1: UITextField!
@IBOutlet weak var textField2: UITextField!
@IBOutlet weak var output: UILabel!
@IBAction func calculate(_ sender: AnyObject) {
let textfieldInt: Int? = Int(textField1.text!)
let textfield2Int: Int? = Int(textField2.text!)
let convert = textField1.text! + textField2.text!
let convertText = String(convert)
output.text = convertText
}
Run Code Online (Sandbox Code Playgroud) 在我的应用程序的UIViewController
" ProfilVC
"是的一部分UINavigationController
" nav
".
但在另一个场景中,我正在呈现 " ProfilVC
"以重复使用相同UIViewController
但具有不同数据.
let vc = tweetsStb.instantiateViewController(withIdentifier: "ProfilVC") as! ProfilVC
self.present(vc, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)
在内didSelectRowAt
,我提出另一个UIViewController
.在这里,我需要检查if self
(ProfilVC
)当前是其中的一部分nav
还是呈现在顶部.
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let vc = tweetsStb.instantiateViewController(withIdentifier: "TweetCommentsVC") as! TweetCommentsVC
let post = tweets[(indexPath as NSIndexPath).section]
let cell = tableView.cellForRow(at: indexPath) as! TweetPostCell
vc.commentCounterString = cell.commentLabel.text!
vc.post = post
vc.avatare = avatare
nav?.present(vc, animated: true, …
Run Code Online (Sandbox Code Playgroud) 问:是否可以在Swift 3中将函数作为函数参数传递?
要重构我的代码,我希望有一个全局函数.在此函数的末尾,有一个带有action
参数的自定义按钮.
let deleteButton = MIAlertController.Button(title: "cancel",
type: .cancel,
config: getDestructiveButtonConfig(),
action: {
print("completed")
})
Run Code Online (Sandbox Code Playgroud)
我想做的是,设置一个函数作为参数的全局函数.
MyGlobalStuff.swift
...
func getButton(_ myFunc: func, _ title: String) {
let deleteButton = MIAlertController.Button(title: title,
type: .cancel,
config: getDestructiveButtonConfig(),
action: {
myFunc // call here the function pass by argument
})
}
Run Code Online (Sandbox Code Playgroud)
getButton(..)
在同一个Class中使用传递的函数调用.
MyViewController.swift
...
getButton(myPrintFunc, "cancel")
func myPrintFunc() {
print("completed")
}
Run Code Online (Sandbox Code Playgroud)
有可能吗?非常感谢帮助.
此代码工作正常:
func setInfoCenterCredentials(_ artist: String, _ title: String, _ image: UIImage) {
let mpic = MPNowPlayingInfoCenter.default()
let albumArt = MPMediaItemArtwork(image: image)
mpic.nowPlayingInfo = [MPMediaItemPropertyTitle: title,
MPMediaItemPropertyArtist: artist,
MPMediaItemPropertyArtwork: albumArt]
}
Run Code Online (Sandbox Code Playgroud)
但是 Xcode 抱怨 : let albumArt = MPMediaItemArtwork(image: image)
,
'init(image:)' 在 iOS 10.0 中被弃用
我试图只是把image
as MPMediaItemPropertyArtwork: image
,但这会导致崩溃。
如何为 iOS 10.0 正确设置?非常感谢帮助。
编辑:是的。我在文档中找到了该部分:
init(boundsSize: CGSize, requestHandler: @escaping (CGSize) -> UIImage)
Run Code Online (Sandbox Code Playgroud)
但我不知道如何使用它。
我正在尝试使用 Firebase 的 Firestore 执行以下查询:
async function getTicketNumbers(companyID) {
var ticketNumbers = []
const docs = await store
.collection('ABC')
.doc(companyID)
.collection('DEF')
.where('ticketStatus', 'in', ['scheduled', undefined])
.get()
if (docs) {
docs.forEach(doc => {
ticketNumbers.push(doc.id)
})
}
return ticketNumbers
}
Run Code Online (Sandbox Code Playgroud)
我的代码中的问题是undefined
关键字。但是如何执行查询 where TicketStatus
isscheduled
或undefined
?
我也试过null
和空字符串''
,什么不会导致错误,但不返回额外的文件。任何帮助都受到高度赞赏。
我正在尝试将动态内容与UIImageView
相邻UILabel
。都在一个内StackView
。
目前,我正在使用“ Fill
对齐和分布”。它更改为其他选项之一,改变的大小ImageView
(固定约束〜30×)。该StackView
离开和领导权的约束0
。
这是我目前的情况:
这就是我想要的:
我如何设置StackView来归档目标?非常感谢您的帮助。
我正在创建一个VOIP应用程序.大多数逻辑类似于Raywenderlich教程.
我的问题是,在接受呼叫后,CXCallController
它不在应用程序之上,而是在"任务管理器"旁边:
问题是,一旦你接受了呼叫,CXCallController
它不是最顶层的控制器,而是实际的应用程序.所以你不能说这个电话正在发生.并执行有关呼叫的操作 - 例如挂断,保持,静音,您将不得不通过任务管理器打开CXCallController
.用户不太友好.
CXCallController
用户接听电话后如何将其置于前面?
在用户接听电话后调用的提供者代理:
func provider(_ provider: CXProvider, perform action: CXAnswerCallAction) {
guard let call = callManager.getCall(with: action.callUUID) else {
action.fail()
return
}
configureAudioSession()
self.incommingCall = call
action.fulfill()
}
Run Code Online (Sandbox Code Playgroud)
创建音频会话后的回调:
func provider(_ provider: CXProvider, didActivate audioSession: AVAudioSession) {
incommingCall?.answerCall(with: audioSession) { success in
if success {
self.incommingCall?.startAudio()
}
}
}
Run Code Online (Sandbox Code Playgroud)
使用TokBox VOIP服务启动调用逻辑:
func answerCall(with audioSession: AVAudioSession, completion: ((_ success: Bool) -> Void)?) {
OTAudioDeviceManager.setAudioDevice(OTDefaultAudioDevice.sharedInstance(with: audioSession))
if session == …
Run Code Online (Sandbox Code Playgroud)