NSTimerの書き方
- 評価
- クリップ 1
- VIEW 710
Swiftの最新版でMacOSX用のAppを開発中です。
MacOS用のApp作成で
NSTimerを使用するにはどのようにしたらいいでしょうか?
設定する時間を決めてその後、「START Button」を押すことで
カウントダウンが始まるようにしたいです。
その時のNSTimerを書く位置と書き方を教えてください。
一応以下まではやりました。しかし出来ません...
import Cocoa
class ViewController: NSViewController {
var canT = false
var timer:NSTimer = NSTimer()
func result() {
MMin = MMin - 1
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override var representedObject: AnyObject? {
didSet {
// Update the view, if already loaded.
}
}
//以上でoverride終了
func result(sender:NSTimer) {
if (MMin == 0) {
timer.invalidate()
} else {
if (MMin / 60 <= 9){
if (MMin % 60 <= 9) {
MMMS.stringValue =
("0\(MMin / 60):0\(MMin % 60)")
MMin = MMin - 1
} else {
MMMS.stringValue = ("0\(MMin / 60):\(MMin % 60)")
MMin = MMin - 1
}
}else {
if (MMin % 60 <= 9) {
MMMS.stringValue = ("\(MMin / 60):0\(MMin % 60)")
MMin = MMin - 1
} else {
MMMS.stringValue = ("\(MMin / 60):\(MMin % 60)")
MMin = MMin - 1
}
}
}
}
var TiMM = 0
//メインの「分」
var TiMS = 0
//メインの「秒」
var TiSM = 0
//セット前の「分」
var TiSS = 0
//セット前の「秒」
var TiMN = 0
/*タイマーが動いてる?
0 = 動いてない
10 = 動いてる
*/
var TiFirst = 0
/*
初めてスタートさせるの?
0 = Yes!
10 = No!
*/
var MMin = 0
//メインの計算用「タイマー」
@IBOutlet weak var Tism: NSTextField!
//セット用のフィールド「分」
@IBOutlet weak var Tiss: NSTextField!
//セット用のフィールド「秒」
@IBOutlet weak var MMMS: NSTextField!
@IBAction func TisAM(sender: AnyObject) {
TiSM = TiSM + 1
if (TiSM <= 9) {
Tism.stringValue = "0\(TiSM)"
} else {
Tism.stringValue = "\(TiSM)"
}
}
//セットタイムを1上げる「分」
@IBAction func TisRM(sender: AnyObject) {
if (TiSM > 0) {
TiSM = TiSM - 1
if (TiSM <= 9) {
Tism.stringValue = "0\(TiSM)"
} else {
Tism.stringValue = "\(TiSM)"
}
}
}
//セットタイムを1下げる「分」
@IBAction func TisAS(sender: AnyObject) {
TiSS = TiSS + 1
if (TiSS <= 9) {
Tiss.stringValue = "0\(TiSS)"
} else {
Tiss.stringValue = "\(TiSS)"
}
}
//セットタイムを1上げる「秒」
@IBAction func TisRS(sender: AnyObject) {
if (TiSS > 0) {
TiSS = TiSS - 1
if (TiSS <= 9) {
Tiss.stringValue = "0\(TiSS)"
} else {
Tiss.stringValue = "\(TiSS)"
}
}
}
//セットタイムを1下げる「秒」
@IBAction func StartBut(sender: AnyObject) {
if (TiMN == 0) {
if (TiFirst == 0) {
MMin = (TiMM * 60) + (TiMS)
canT = true
TiMN = 10
timer = NSTimer.scheduledTimerWithTimeInterval(
1.0,
target:self,
selector: "result",
userInfo:nil,
repeats: canT)
}//
}
}
//スタートボタン
@IBAction func ResetBut(sender: AnyObject) {
}
//リセットボタン
}
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
0
func result()
とfunc result(sender:NSTimer)
の2つの関数が定義されていますが、
selector: "result"
と指定してタイマーを起動したら、タイムアウト発生時に呼ばれるのはresult()
の方です。
result(sender:NSTimer)
の方が呼ばれるようにしたかったら"result"
ではなく"result:"
と指定する必要があります。
もし問題としているところが違うなら、「出来ません」というのが、何を期待してどうできないのか具体的に説明してください。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.37%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
2016/05/27 17:26
こちらの質問が他のユーザから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました
「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。