小编Ili*_*uda的帖子

在Swift中变量值发生变化时执行方法

我需要在变量值改变时执行一个函数.

我有一个包含一个名为的共享变量的单例类labelChange.此变量的值取自另一个名为的类Model.我有两个VC类,其中一个有按钮和标签,第二个只有一个按钮.

当按下第一个VC类中的按钮时,我正在用这个func更新标签:

func updateLabel(){
    self.label.text = SharingManager.sharedInstance.labelChange
}
Run Code Online (Sandbox Code Playgroud)

但是每当labelChange更改值时我想调用相同的方法.因此,在按钮单击中,我将只更新labelChange值,当这件事发生时,我想用新的值更新标签labelChange.同样在第二个VC中,我可以更新labelChange值,但是当更改此值时,我无法更新标签.

也许属性是解决方案,但任何人都可以告诉我如何这样做.

第二次编辑:

单身人士课程:

class SharingManager {
    func updateLabel() {
        println(labelChange)
        ViewController().label.text = SharingManager.sharedInstance.labelChange     
    }
    var labelChange: String = Model().callElements() {
        willSet {
            updateLabel()
        }
    }
    static let sharedInstance = SharingManager()
}
Run Code Online (Sandbox Code Playgroud)

第一个VC:

class ViewController: UIViewController {
    @IBOutlet weak var label: UILabel!
    @IBAction func Button(sender: UIButton) {    
       SViewController().updateMessageAndDismiss()
    }
}
Run Code Online (Sandbox Code Playgroud)

第二个VC:

func updateMessageAndDismiss() {
        SharingManager.sharedInstance.labelChange = modelFromS.callElements()
        self.dismissViewControllerAnimated(true, completion: …
Run Code Online (Sandbox Code Playgroud)

singleton properties ios swift

34
推荐指数
4
解决办法
5万
查看次数

通过在Swift中添加两个标签而不是标题来自定义导航栏

我想在导航栏中显示标题的位置添加两个标签,但我很难这样做.如果我能用故事板实现这一点,那将是非常好的,但我可以看到我做不到.

正如我所见,我需要使用navigationItem,但我不知道如何做到这一点.如果有人有任何例子,或者如果有人能更具体地解释我怎么做,那将是美好的.

我需要提一下,我对Obj-C完全不熟悉,所以任何帮助都需要在Swift中.

uinavigationcontroller uilabel uinavigationitem ios swift

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

swift右侧的SWRevealViewController

我正在使用SWRevealViewController库在swift中制作一个滑出菜单,但我很难将这个菜单放在右侧.我在图书馆描述中看到了这条评论

// Optional right view controller, can be nil if not used
@property (nonatomic) UIViewController *rightViewController;
Run Code Online (Sandbox Code Playgroud)

但是我对目标C并不熟悉,而且我无法在swift上做到这一点.这是我的默认(左)菜单代码的一部分:

class ViewController: UIViewController, AVAudioPlayerDelegate {

@IBOutlet weak var playlistOutlet: UIBarButtonItem!

override func viewDidLoad() {
    super.viewDidLoad()

    playlistOutlet.target = self.revealViewController()
    playlistOutlet.action = Selector("revealToggle:")

    self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())

}
}
Run Code Online (Sandbox Code Playgroud)

并且从SWRevealViewController库调用revealViewController

objective-c ios swrevealviewcontroller swift

11
推荐指数
3
解决办法
8209
查看次数

Facebook本地共享对话框在swift中

我正在尝试创建分享按钮,它将在Facebook上共享链接.问题是我不想在我的应用程序中的共享按钮之前有一个登录按钮,我只需要一个共享按钮.

我认为一种解决方案可能是使用自定义按钮登录和共享按钮,并将这些按钮合并为一个.这样,如果用户在点击分享按钮时没有登录,则会要求他登录.然而,在我试图实现这一目标的过程中,我发现Native Share Dialog是更好的解决方案,因为它根本不需要登录.

但我很难找到任何引用/教程/示例或任何使用swift的Native Share Dialog.Obj-c上有一些例子和东西,但我从未使用过Obj-c,我对此一无所知.

如果有人有任何例子,或者任何人都指出我正确的方向如何在Swift中实现Facebook Native Share Dialog,那我就是在跳跃.

如果不是剂量,任何人都有任何在Swift上使用自定义共享按钮的例子

facebook facebook-graph-api ios facebook-sdk-4.0 swift

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

快速制作播放列表(开始下一首歌)

我用AVFoundation快速创建了一个声音播放器.我正在尝试在播放歌曲结束时开始播放下一首歌曲.我试图实现这个代码

if (audioPlayer.currentTime >= audioPlayer.duration){
    var recentSong = songPlaylist[selectedSongNumber + 1]
    audioPlayer = AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath:
            NSBundle.mainBundle().pathForResource(recentSong, ofType: "mp3")!), error: nil)
    audioPlayer.play()
}
Run Code Online (Sandbox Code Playgroud)

但我无法实现此代码(我不知道在哪里实现它.)这是我的完整代码

import UIKit
import AVFoundation
import AVKit

public var audioPlayer = AVPlayer()
public var selectedSongNumber = Int()
public var songPlaylist:[String] = ["song1", "song2"]
public var recentSong = "song1"
let playImage = UIImage(named: "Play.png") as UIImage!
let pauseImage = UIImage(named: "Pause.png") as UIImage!

class FirstViewController: UIViewController {

@IBOutlet weak var musicSlider: UISlider!

@IBOutlet weak var PlayPause: UIButton!

var audioPlayer …
Run Code Online (Sandbox Code Playgroud)

avfoundation playlist avaudioplayer ios swift

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

前/后递增/递减和操作员订单混淆

我正在进行一些练习,但我对此感到困惑:

public static int f (int x, int y) {
  int b=y--;
  while (b>0) {
    if (x%2!=0)  {
      --x;
      y=y-2; 
    }
    else { 
      x=x/2;
      b=b-x-1; 
    }
  }
  return x+y; 
} 
Run Code Online (Sandbox Code Playgroud)

目的是b=y--什么?因此,例如,x=5并且y=5 当我们第一次进去的,而环(while (b>0))将b= 4或5?当我运行时,我的计算机中的代码b是5.而返回的是3.我真的不清楚.对不起,如果我的问题不清楚.

java operators

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