我遇到了问题NSUserDefaults(suiteName: "group.app-ID").
我尝试将一个NSArray存入NSUserDefaults容器中的应用程序中viewDidLoad().
var defaults: NSUserDefaults = NSUserDefaults(suiteName: "group.app-ID")
defaults.setObject(["One", "Two"], forKey: "bookmarks")
defaults.synchronize()
Run Code Online (Sandbox Code Playgroud)
在我的TodayExtension中,我试着像这样得到数组:
扩展ViewController中的Globaly Defenition:
var defaults: NSUserDefaults = NSUserDefaults(suiteName: "group.app-ID")
var defaultsArray: NSArray!
Run Code Online (Sandbox Code Playgroud)
在 viewDidLoad()
defaultsArray = defaults.objectForKey("bookmarks") as NSArray
Run Code Online (Sandbox Code Playgroud)
但defaultsArray总是如此nil.
应用程序组权利已添加到所有目标.
编辑:
我正在学习Raywenderlich的教程.我的问题是为什么我们使用可选的绑定,即if let它有什么区别?为什么我们不能使用可选链接 - 类似于A线和B线?
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("IconCell", forIndexPath: indexPath)
let icon = icons[indexPath.row]
cell.textLabel?.text = icon.title // Line A
cell.detailTextLabel?.text = icon.subtitle // Line B
if let imageView = cell.imageView, iconImage = icon.image { //Line C
imageView.image = iconImage
}
Run Code Online (Sandbox Code Playgroud)
教练的解释是:
当我们实例化图标时,我们会根据字符串获得对图像的引用...如果由于某种原因图像未包含在包中,重命名或删除,则该图标可能没有与之关联的图像.我们必须使用,如果让它确保它在那里.
我仍然不明白其中的区别.
StyleKit代码:
static let red: UIColor = UIColor(red: 0.800, green: 0.000, blue: 0.000, alpha: 1.000)
static let blue: UIColor = UIColor(red: 0.200, green: 0.600, blue: 1.000, alpha: 1.000)
static let green: UIColor = UIColor(red: 0.000, green: 0.600, blue: 0.200, alpha: 1.000)
static let yinying: UIColor = UIColor(red: 1.000, green: 1.000, blue: 1.000, alpha: 0.200) static let redGradient: CGGradient = CGGradientCreateWithColors(CGColorSpaceCreateDeviceRGB(), [UIColor.whiteColor().CGColor, UIColor.whiteColor().blendedColorWithFraction(0.5, ofColor: StyleKitMarkSix.red).CGColor, StyleKitMarkSix.red.CGColor], [0, 0, 1])!
static let blueGradient: CGGradient = CGGradientCreateWithColors(CGColorSpaceCreateDeviceRGB(), [UIColor.whiteColor().CGColor, UIColor.whiteColor().blendedColorWithFraction(0.5, ofColor: StyleKitMarkSix.blue).CGColor, StyleKitMarkSix.blue.CGColor], [0, 0, …Run Code Online (Sandbox Code Playgroud) 有没有机会将一个Integer转换为indexPath?
因为按下按钮时我需要从单元格输出文本.或者我可以使用String作为Button的发送者吗?
cell.uncheckbox.tag = indexPath.row as! IndexPath
cell.uncheckbox.addTarget(self, action: #selector(ViewController.btnClicked), for: UIControlEvents.touchUpInside)
func btnClicked(sender: UIButton)
{
let row = sender.tag
let cell = tableView.dequeueReusableCell(withIdentifier: "LabelCell", for: row) as! TableViewCell;
print("cellentext \(cell.textLabel?.text)")
}
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
我想绕到最接近的一半Double.例如,如果数字是3.76我希望它舍入到4.另一方面,如果数字是3.74我希望它舍入到3.5.
我想出了这段代码:
extension Double {
func roundToClosestHalf() -> Double {
let upperLimit = ceil(self)
let difference = upperLimit - self
if difference <= 0.25 {
return ceil(self)
} else if difference > 0.25 && difference < 0.75 {
return upperLimit - 0.5
} else {
return floor(self)
}
}
}
Run Code Online (Sandbox Code Playgroud)
有没有更有效/更好的方法来做到这一点?
let x = 3.21.roundToClosestHalf() // 3
Run Code Online (Sandbox Code Playgroud) 在将视图添加到我的应用程序之前,我已经创建了一个小型演示游乐场来使其工作。
我有一个滚动视图,它将包含许多水平滚动的按钮。我知道这些按钮需要进入滚动视图中的容器视图,并且也创建了它。我最初使用自动布局约束来创建所有这些,但现在尝试使用常量来确保内容视图大于滚动视图。但是,按钮仍然不会滚动......我错过了什么吗?滚动视图不适用于自动布局吗?
我也在我的 iPad 上以编程方式执行所有这些操作,因此不幸的是,使用界面构建器的解决方案不是一种选择...
这是完整的代码:
import UIKit
import PlaygroundSupport
class FilterViewController: UIViewController {
var filterView: UIView!
var scrollView: UIScrollView!
var containerView: UIView!
override func loadView() {
filterView = UIView()
view = filterView
view.backgroundColor = #colorLiteral(red: 0.909803926944733, green: 0.47843137383461, blue: 0.643137276172638, alpha: 1.0)
scrollView = UIScrollView()
scrollView.backgroundColor = #colorLiteral(red: 0.474509805440903, green: 0.839215695858002, blue: 0.976470589637756, alpha: 1.0)
view.addSubview(scrollView)
scrollView.translatesAutoresizingMaskIntoConstraints = false
scrollView.topAnchor.constraint(equalTo:view.topAnchor, constant:40).isActive = true
scrollView.leadingAnchor.constraint(equalTo:view.leadingAnchor).isActive = true
scrollView.widthAnchor.constraint(equalTo:view.widthAnchor).isActive = true
scrollView.heightAnchor.constraint(equalToConstant: 200).isActive = true
scrollView.isScrollEnabled = true
containerView = UIView() …Run Code Online (Sandbox Code Playgroud) uiscrollview ios programmatically-created swift swift-playground
我想要一个协议:
protocol CameraButtonDelegate: class {
func cameraButtonDidPress(_ sender: UIButton)
}
Run Code Online (Sandbox Code Playgroud)
因此,我可以将任何客户端分配给按钮,例如:
cameraButton.addTarget(delegate, action: #selector(cameraButtonDidPress), for: .touchUpInside)
Run Code Online (Sandbox Code Playgroud)
但是,它不能编译,因为我必须在中指定特定功能action,例如:
cameraButton.addTarget(delegate, action: #selector(AAPLViewController.cameraButtonDidPress), for: .touchUpInside)
Run Code Online (Sandbox Code Playgroud)
如果我想通过一个按钮将多个客户作为目标,该如何解决此问题?
我有两种看法:toastView和view。toastView是 的子视图view。我想toastView在 y 轴上定位view高度的 80%。如何在代码中使用常量来做到这一点?
我假设有一个类似的方法:
[toastView.topAnchor constraintEqualToAnchor:view.heightAnchor multiplier:0.8].active = YES;
Run Code Online (Sandbox Code Playgroud)
但我不能混合NSLayoutDimension(宽度和高度)和NSLayoutYAxisAnchor(X 和 Y)
这就是它在设计中的样子:

这是一个自我回答的问题,在 Stack Overflow 上完全可以接受(甚至鼓励)。重点是分享对他人有用的东西。
SwiftUI 有一个RoundedRectangle Shape. 如果有一个带有圆形尖端的五角星,可用于填充、剪切和动画,那就太好了。
这个Stack Overflow 答案展示了RoundedStar如何UIView 使用UIBezierPath.
这段代码如何改编为可以动画的SwiftUI代码?Shape
I created a Model like this:
class TestModel: ObservableObject {
@Published var num: Int = 0
}
Run Code Online (Sandbox Code Playgroud)
Model is be used in "Home" view and "Home"s child view "HomeSub"
struct Home: View {
@StateObject var model = TestModel()
var body: some View {
NavigationView(content: {
NavigationLink(destination: HomeSub(model: model)) { Text("\(model.num)") }
})
}
}
Run Code Online (Sandbox Code Playgroud)
struct HomeSub: View {
//1
@StateObject var model = TestModel()
//2
@ObservedObject var model = TestModel()
var body: some View {
VStack {
Text("\(model.num)")
.padding()
.background(Color.red) …Run Code Online (Sandbox Code Playgroud) swift ×9
ios ×3
swift3 ×2
swiftui ×2
animation ×1
autolayout ×1
combine ×1
delegation ×1
objective-c ×1
optional ×1
rounding ×1
shapes ×1
uibutton ×1
uiscrollview ×1