小编The*_*oup的帖子

didSelectRowAtIndexPath无效,Swift 3

任何人都可以看到为什么世界上没有调用SelectRowAtIndexPath会被调用?我delegate在代码和故事板中都进行了三重检查.

class AddCard: UIViewController,UIPopoverPresentationControllerDelegate, UITableViewDataSource, UITableViewDelegate {

@IBOutlet weak var cardView: UIView!
@IBOutlet weak var tableView: UITableView!

let tableItems = ["Background Color","Background Image","Font Style","Font Color"]
let cellID = "cell"

override func viewDidLoad() {
    super.viewDidLoad()

    tableView.delegate = self
    tableView.dataSource = self
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

func setBackgroundColor (_ color: UIColor) {
    cardView.backgroundColor = color
}

func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return 1
}

func tableView(_ tableView: …
Run Code Online (Sandbox Code Playgroud)

xcode uitableview ios swift

14
推荐指数
1
解决办法
2万
查看次数

用于管理推送通知的iOS API

这是一个很长的镜头,但有没有任何公共(或私人)API允许我们在iOS设备上阅读现有的推送通知?例如,在后台运行的应用程序是否可以每隔X秒对系统进行一次极限操作,以确定设备是否已收到来自Stack Exchange应用程序的推送通知并获取其内容?

这里的想法是有一些服务(例如Ring Video Doorbell)还没有公共REST API.但是当在环形摄像机上检测到运动时,它会发送推送通知.与流行的IFTTT服务类似,此应用程序会在设备上触发该通知,然后根据用户设置的标准执行某些操作.

我想至少必须有一个私有API,因为Apple会在通知中心显示设备最近的通知.

push-notification ios

13
推荐指数
2
解决办法
1013
查看次数

Swift运算符"*"在两个Ints上抛出错误

我在这里有一个非常奇怪的错误,我四处搜索,我已经尝试了所有的建议.没有工作.

scrollView.contentSize.height = 325 * globals.defaults.integer(forKey: "numCards")
Run Code Online (Sandbox Code Playgroud)

二进制运算符'*'不能应用于两个'Int'操作数

WTF斯威夫特!为什么不?我Ints一直在增加.这些ARE 2 Ints. globals.defaults只是一个例子UserDefaults.standard.我每次都尝试以下相同的错误.

325 * Int(globals.defaults.integer(forKey: "numCards")   //NOPE

Int(325) * Int(globals.defaults.integer(forKey: "numCards"))  //NOPE

if let h = globals.defaults.integer(forKey: "numCards"){
    325 * h  //NOPE, and 'Initializer for conditional binding must have optional type, not Int'
}

let h = globals.defaults.integer(forKey: "numCards") as! Int
325 * h //NOPE, and 'Forced cast of Int of same type as no affect'

325 * 2 //YES!  But no shit... …
Run Code Online (Sandbox Code Playgroud)

swift swift3

11
推荐指数
1
解决办法
4603
查看次数

SpriteKit不会释放所有已用内存

我已经准备好很多(如果不是全部)SO和其他网站上有关处理SpriteKit和内存问题的灾难的文章.像许多其他人一样,我的问题是在我离开我的SpriteKit场景之后几乎没有在场景会话期间添加的任何内存被释放.我试图在我发现的文章中实现所有建议的解决方案,包括但不限于......

1)确认deinit在SKScene类中调用该方法.

2)确认没有strong引用场景类中的父VC.

3)强制删除所有子项和动作,并将场景设置nil为VC消失时.(将场景设置为最终被调用nildeinit方法)

然而,在所有这些之后,内存仍然存在.一些背景,这个应用程序介于标准的UIKit视图控制器和SpriteKit场景之间(它是一个专业的绘图应用程序).例如,在进入SpriteKit场景之前,应用程序使用大约400 MB.进入场景并创建多个节点后,内存增长到1 GB以上(到目前为止都很好).当我离开现场时,内存可能下降100 MB.如果我重新进入现场,它会继续堆积.有关如何完全释放SpriteKit会话期间使用的所有内存的方法或建议吗?下面是一些用于尝试解决此问题的方法.

SKScene课程

func cleanScene() {
    if let s = self.view?.scene {
        NotificationCenter.default.removeObserver(self)
        self.children
            .forEach {
                $0.removeAllActions()
                $0.removeAllChildren()
                $0.removeFromParent()
        }
        s.removeAllActions()
        s.removeAllChildren()
        s.removeFromParent()
    }
}

override func willMove(from view: SKView) {
    cleanScene()
    self.removeAllActions()
    self.removeAllChildren()
}
Run Code Online (Sandbox Code Playgroud)

介绍VC

var scene: DrawingScene?

override func viewDidLoad(){
    let skView = self.view as! SKView
    skView.ignoresSiblingOrder = true
    scene = DrawingScene(size: skView.frame.size)
    scene?.scaleMode = .aspectFill
    scene?.backgroundColor = UIColor.white
    drawingNameLabel.text …
Run Code Online (Sandbox Code Playgroud)

memory automatic-ref-counting retain-cycle sprite-kit swift

6
推荐指数
1
解决办法
620
查看次数

如何在场景边缘停止SKCameraNode

我有一个SpriteKit场景,我有一个背景(SKSpriteNode),它是场景帧大小的2倍.我添加了一个随着用户平移并用手指捏动的相机.我实现了缩放和平移,但是,我需要相机不要移过背景节点的边缘.

我尝试过使用物理体和边缘循环,但这不起作用(除非我设置错误).这是我目前拥有的代码和一些有助于传达信息的图像.我应该移动背景节点而不是相机吗?

self.physicsBody = SKPhysicsBody(edgeLoopFrom: self.frame)
self.physicsBody!.categoryBitMask = SCENE_EDGE_CAT
self.physicsWorld.contactDelegate = self

mCamera = self.childNode(withName: "camera") as! SKCameraNode
mCamera.physicsBody = SKPhysicsBody(edgeLoopFrom: mCamera.frame)
mCamera.physicsBody?.collisionBitMask = self.SCENE_EDGE_CAT
mCamera.physicsBody!.contactTestBitMask = mCamera.physicsBody!.collisionBitMask

func panForTranslation(_ translation: CGPoint) {
    let position = mCamera.position
    let aNewPosition = CGPoint(x: position.x - translation.x, y: position.y - translation.y)
    mCamera?.position = aNewPosition
}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
    let touch = touches.first
    let positionInScene = touch?.location(in:self)
    let previousPosition = touch?.previousLocation(in:self)
    let translation = CGPoint(x: (positionInScene?.x)! - (previousPosition?.x)!, …
Run Code Online (Sandbox Code Playgroud)

sprite-kit swift

4
推荐指数
1
解决办法
1012
查看次数

系统字体在iOS模拟器中不起作用

我已经阅读了关于这个主题的大部分问题和答案,它们似乎都适用于自定义字体,而不是系统字体.

我使用Interface builder并在SpriteKit场景上有一个SKLabelNode,我将字体更改为'Lithos Pro'.它在IB中正确显示,但在模拟器中运行时会显示通用字体.我还以编程方式向场景中添加了一个UITextField,尝试使用相同的字体,但也无法使用.

据我所知,这是作为NSFont捆绑包的一部分,但只是为了确认我将TTF文件添加到项目中并将它们包含在我的目标资源中.仍然没有去.

思考?

nameField = UITextField(frame: CGRect(x: view.center.x - 150,y:view.center.y - 25,width: 300, height: 50))
nameField.font = UIFont(name: "Lithos Pro Regular", size: 25)  //I've tried 'Lithos Pro, LithosPro, and Lithos Pro Regular'
nameField.textAlignment = .center
nameField.borderStyle = UITextBorderStyle.roundedRect
nameField.autocorrectionType = UITextAutocorrectionType.no
nameField.keyboardType = UIKeyboardType.default
nameField.returnKeyType = UIReturnKeyType.done
nameField.clearButtonMode = UITextFieldViewMode.whileEditing;
nameField.contentVerticalAlignment = UIControlContentVerticalAlignment.center
view.addSubview(nameField)
Run Code Online (Sandbox Code Playgroud)

xcode nsfont sprite-kit swift

1
推荐指数
1
解决办法
456
查看次数