我正在使用swift 3.0并创建了一个返回整数数组的函数.整数数组非常具体,它们来自数据库,因此HTTP调用是异步的.这是一个功能,因为我在3个不同的控制器中使用它,所以写一次是有意义的.我的问题是在底部的return语句之后返回异步代码,因此返回nil.我在这里试过这个例子等待任务完成但是它不起作用主要是因为我需要返回值.这是我的代码
func ColorSwitch(label: [UILabel]) -> [Int] {
for (index, _) in label.enumerated() {
label[index].isHidden = true
}
// I need the value of this variable in the return
// statement after the async is done
var placeArea_id = [Int]()
let urll:URL = URL(string:ConnectionString+"url")!
let sessionn = URLSession.shared
var requestt = URLRequest(url: urll)
requestt.httpMethod = "POST"
let group = DispatchGroup()
group.enter()
let parameterr = "http parameters"
requestt.httpBody = parameterr.data(using: String.Encoding.utf8)
let task = sessionn.dataTask(with:requestt, completionHandler: {(data, response, error) …Run Code Online (Sandbox Code Playgroud) 这个问题类似于“如何从不同的viewController传递数据”,但是在这种情况下,我需要其他信息,我知道如何将数据从一个viewController传递给另一个viewController,但是我不知道如何告诉第二个viewController一个特定的信息。第一个视图中对象的状态。就我而言,在第一个视图中有一些按钮可以进入。
button.isHidden = true
Run Code Online (Sandbox Code Playgroud)
点击之后,我想告诉第二个viewController哪些按钮被点击了,也许我要创建一个代表按钮状态的变量,但是我不知道该怎么做,有人可以帮助我吗?
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "goToLast" {
guard let vc = segue.destination as? FinalClass else { return }
let guest = segue.destination as! FinalClass
if let user = sender as? User {
}
}
}
Run Code Online (Sandbox Code Playgroud)
用户可以像
struct User {
var button1 = Button1 tapped
var button2 = Button2 tapped
ecc.
}
Run Code Online (Sandbox Code Playgroud) 如下所示,对货币代码的简单请求应返回货币代码,但返回nil.我是否需要在申请货币代码之前设置区域,或者是否有我遗漏的东西.我在我的模拟器上使用Swift 3.1和Xcode 8.3.3 iphone 6和相同的结果.
if let currencyCode = Locale.current.currencyCode {
print(currencyCode)
}
Run Code Online (Sandbox Code Playgroud) 对于警报对话框,我添加了一个UITableView,然后当我尝试对Table View Cell进行操作时,Interface Builders不接受将Table View Cell放在“ on”表视图上,请检查屏幕快照,我应该提到根是UIView,而不是UIViewController:
我一直在阅读类似的问题,直到现在都没有解决这个错误,或者我没有找到它.
我有一个TableView,我需要该表具有特定的行数.
现在它可以处理来自数组的通知计数.在这个数组中,我保留了来自服务器的通知.但我希望如果此数组计数大于40,则行数为40,它们不是数组的计数.
这是我的代码:
class ClassName: UITableViewController, UITabBarControllerDelegate {
public var notifications: [APINotification] = []
override func viewDidLoad() {
super.viewDidLoad()
self.tabBarController?.delegate = self
tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 140
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func viewDidAppear(_ animated: Bool) {
self.notifications = []
self.getLastNotifications()
APIAuth.shared.count_badge = 0
self.tabBarController?.tabBar.items![0].badgeValue = nil
}
public func getLastNotifications() {
let req = Notification()
req.getLastNotifications(onComplete: {events in
self.notifications = events
DispatchQueue.main.async(execute: {
self.tableView.reloadData()
}) …Run Code Online (Sandbox Code Playgroud) 我在TableView中有一个UILabel,并且UILabel附加到GestureRecognizer。我想做的是在标签点击时将UILabel的颜色更改为红色。现在,当我轻敲UILablel时,我非常接近,Label变为红色,但是错误的TableCell改变了颜色。如果我点击单元格3,那么我希望单元格3中的UILabel更改颜色,而不是单元格4或5。
class HomeProfilePlacesCell: NSObject {
var CellCopy: HomeTVC?
@objc func PostTap(_ sender: UIGestureRecognizer) {
// This works but it often changes wrong cell
CellCopy?.post.textColor = UIColor.red
}
func HomeProfilePlaceTVC(_ tableView: UITableView, cellForRowAt indexPath: IndexPath, streamsModel : streamModel,HOMEPROFILE: HomeProfile, controller: UIViewController) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "HomeTVC", for: indexPath) as! HomeTVC
CellCopy = cell
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(PostTap(_:)))
tapGesture.delegate = self as? UIGestureRecognizerDelegate
cell.post.addGestureRecognizer(tapGesture)
cell.post.text = streamsModel.Posts[indexPath.row]
cell.post.tag = indexPath.row
return cell
}
}
Run Code Online (Sandbox Code Playgroud)
再次,代码可以正常工作,我只需要找到一种方法即可将单击的单元格的索引路径传递到PostTap方法,以便它可以更改所点击的正确单元格的颜色。任何帮助或建议都会很棒。我不想使用“表刷新”,因为我仅在单击的单元格中更改了1个UILabel。
我试图对驼峰的情况进行简单的冲刺,所以:"这是我的身份"将成为swift 3(或4)中的"thisIsMyId".
无论我做什么,我找不到一个优雅的方式来做到这一点..:以下不起作用:
str.split(separator: "-").enumerated().map { (index, element) in
return index > 0 ? element.capitalized : element
}.reduce("", +)
Run Code Online (Sandbox Code Playgroud)
它哭泣所有的东西.我相信有一个简单的方法......任何人?
我有一个名为messageDict的属性,有时它会因为该应用程序崩溃而获得nil值.有人可以建议我如何妥善处理它.
var messageDict : [String : NSArray]?
if let messageDict = messageDict {
let messageArray = messageDict[outBoxId]! as! [MCOIMAPMessage] // crash indicates here
}
Run Code Online (Sandbox Code Playgroud)
如果数据可用,我将存储在数据下面.有时它会是零
Message-ID: CABQG1ZJT0a7=NExme6VWA6iRpe6Du5LViuA9kZf-QbqOyX1RfQ@mail.gmail.com
References: [dca79b0a-ea55-a4f6-aef3-9097559148f5@peoplelogic.in,CABQG1ZKpat9nGSOjs-Q341bmn0vkiVH+CdFpu2JgkC92KO_K=Q@mail.gmail.com]
In-Reply-To: [CABQG1ZKpat9nGSOjs-Q341bmn0vkiVH+CdFpu2JgkC92KO_K=Q@mail.gmail.com]
Run Code Online (Sandbox Code Playgroud) 我正在关注本教程:https : //medium.com/flawless-app-stories/ios-remote-push-notifications-in-a-nutshell-d05f5ccac252
但是由于某种原因,我越来越
无法将“ AppDelegate”分配给“ UNUserNotificationCenterDelegate”。
那条线是做什么的?如果我将其注释掉,其余代码将正常工作,并且如果用户希望允许通知,则会提示用户。
func registerForPushNotifications() {
UNUserNotificationCenter.current().delegate = self // line in question
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) {
(granted, error) in
print("Permission granted: \(granted)")
// 1. Check if permission granted
guard granted else { return }
// 2. Attempt registration for remote notifications on the main thread
DispatchQueue.main.async {
UIApplication.shared.registerForRemoteNotifications()
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用Swift 4开发iOS应用程序.在该项目中我有要求,我必须动态创建控件以及正确的对齐方式.
例如,当我点击该按钮时,我有一个按钮,我正在接受服务,因为我正在获取包含4个对象的json数据.基于此我必须动态创建控件,动态对齐也应该这样做.我尝试了很多例子和教程.我没有找到任何解决方案.
swift3 ×10
ios ×8
swift ×7
uitableview ×2
xcode ×2
asynchronous ×1
swift4 ×1
swxmlhash ×1
tableview ×1
uitextfield ×1
xcode9 ×1