Форум программистов, компьютерный форум CyberForum.ru

Swift

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 36, средняя оценка - 4.86
Mistin
0 / 0 / 0
Регистрация: 13.06.2012
Сообщений: 34
#1

Нужна задержка между выполнениями действий - Swift

23.06.2014, 19:48. Просмотров 4809. Ответов 41
Метки нет (Все метки)

Здравствуйте.
Подскажите, как сделать, чтобы текст выводился с задеркой (например в одну секунду).
Например:
Код
println("Ла-ла-ла")
//А тут задержка в 1 секунду.
println("Бла-бла-бла")
На самом деле код нечно по другому будет выглядеть (не в консоле будет вывод).
Но мне надо, чтобы вывелся "Ла-ла-ла" и через секунду "Бла-бла-бла".
Заранее спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.06.2014, 19:48     Нужна задержка между выполнениями действий
Посмотрите здесь:
Visual Basic Задержка между выполнениями функций макроса.
Задержка между действиями Android
Задержка между командами C++ Linux
ActionScript AS 3.0 Задержка между клипами
Нужна задержка в выполнении программы или как использовать таймер? Delphi
Visual Basic .NET задержка между запусками BackgroundWorker'ов
C# Задержка между вызовами методами
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TexHuK
9 / 9 / 0
Регистрация: 19.10.2011
Сообщений: 102
24.06.2014, 15:14     Нужна задержка между выполнениями действий #16
Цитата Сообщение от Xavier Посмотреть сообщение
конечно оно не будет работать, лол
ну в objc все так было
в swift-e поменялось

ну а как остановить таймер например из метода1?
пытаюсь обратиться к timer1, но область видимости не позволяет это сделать.
может есть возможность объявить глобальный таймер? что бы можно было к нему обратиться из любой части класса?
Xavier
in god we trust
74 / 74 / 8
Регистрация: 20.04.2012
Сообщений: 201
24.06.2014, 15:32     Нужна задержка между выполнениями действий #17
Цитата Сообщение от TexHuK Посмотреть сообщение
ну а как остановить таймер например из метода1?
Вот так например:
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
       var  timer1 = NSTimer.scheduledTimerWithTimeInterval(1.5, target:self, selector: "myMetod1:", userInfo: nil, repeats: true)
        // Do any additional setup after loading the view, typically from a nib.
    }
 
    func myMetod1(timer: NSTimer){
        timer.invalidate()
    }
 
}
Цитата Сообщение от TexHuK Посмотреть сообщение
в swift-e поменялось
В таком случае советую все таки для начала с основами синтаксиса ознакомиться, а потом уже с NSTimer-aми и компанией разбираться. Благо литература для этого есть и она достаточно удобная и понятная.
TexHuK
9 / 9 / 0
Регистрация: 19.10.2011
Сообщений: 102
24.06.2014, 15:50     Нужна задержка между выполнениями действий #18
Цитата Сообщение от Xavier Посмотреть сообщение
В таком случае советую все таки для начала с основами синтаксиса ознакомиться, а потом уже с NSTimer-aми и компанией разбираться. Благо литература для этого есть и она достаточно удобная и понятная.
ну как бы основы учатся, в принципе нечего сложного, практика тоже нужна, есть только некоторое недопонимание как всегда. Спасибо конечно за пример, только я вот не пойму, а если у меня много таких переменных? Мне их все перечислять в аргументах функции? Т. е. глобального объявления переменных тут не работает?
Xavier
in god we trust
74 / 74 / 8
Регистрация: 20.04.2012
Сообщений: 201
24.06.2014, 16:07     Нужна задержка между выполнениями действий #19
Нет ну почему же не работает, все работает. Хочешь как глобальную объявляй вне класса, хочешь как свойство класса объявляй, все на твое усмотрение. Просто в данном случае это более традиционный метод.
TexHuK
9 / 9 / 0
Регистрация: 19.10.2011
Сообщений: 102
24.06.2014, 16:46     Нужна задержка между выполнениями действий #20
Вот теперь все встало на свои места
Mistin
0 / 0 / 0
Регистрация: 13.06.2012
Сообщений: 34
25.06.2014, 20:42  [ТС]     Нужна задержка между выполнениями действий #21
Я так и не понял. Я прописал это:
Objective-C
1
2
3
4
5
6
7
8
9
class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
       var  timer1 = NSTimer.scheduledTimerWithTimeInterval(1.5, target:self, selector: "myMetod1:", userInfo: nil, repeats: true)
        // Do any additional setup after loading the view, typically from a nib.
    } 
}
А что надо прописать, чтобы в конкретном месте сработал этот таймер?
TexHuK
9 / 9 / 0
Регистрация: 19.10.2011
Сообщений: 102
25.06.2014, 23:42     Нужна задержка между выполнениями действий #22
Цитата Сообщение от Mistin Посмотреть сообщение
А что надо прописать, чтобы в конкретном месте сработал этот таймер?
нужно создать функцию в том же классе

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
       var  timer1 = NSTimer.scheduledTimerWithTimeInterval(1.5, target:self, selector: "myMetod1:", userInfo: nil, repeats: true)
        // Do any additional setup after loading the view, typically from a nib.
    } 
 
func myMetod1(timer1:NSTimer)
 {
 //тут код
 }
}
Mistin
0 / 0 / 0
Регистрация: 13.06.2012
Сообщений: 34
26.06.2014, 11:00  [ТС]     Нужна задержка между выполнениями действий #23
Так...а объявлять её как? Я имею в виду, прописывают я потом: myMethod1(timer1: А ТУТ ЧТО ПИСАТЬ?)
Или как его тогда ставить?
TexHuK
9 / 9 / 0
Регистрация: 19.10.2011
Сообщений: 102
26.06.2014, 11:11     Нужна задержка между выполнениями действий #24
Цитата Сообщение от Mistin Посмотреть сообщение
Так...а объявлять её как? Я имею в виду, прописывают я потом: myMethod1(timer1: А ТУТ ЧТО ПИСАТЬ?)
Или как его тогда ставить?
я тебе уже рабочий код привел, все как есть, так и пишешь.
Mistin
0 / 0 / 0
Регистрация: 13.06.2012
Сообщений: 34
26.06.2014, 11:15  [ТС]     Нужна задержка между выполнениями действий #25
Возможно я туплю...
Objective-C
1
2
3
4
func myMetod1(timer1:NSTimer)
 {
 //тут код
 }
Но этот код не делает конкретно ничего. Что бы он начал делать, надо прописать: myMethod1(timer1: ***)
Верно? Так вот, я не понимаю что ставить вместо ***.
Или надо написать вобще другое (переменную timer1)?
TexHuK
9 / 9 / 0
Регистрация: 19.10.2011
Сообщений: 102
26.06.2014, 11:22     Нужна задержка между выполнениями действий #26
ну ты можешь написать

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
       var  timer1 = NSTimer.scheduledTimerWithTimeInterval(1.5, target:self, selector: "myMetod1:", userInfo: nil, repeats: true)
        // Do any additional setup after loading the view, typically from a nib.
    } 
 
//timer1:NSTimer нужен для того, чтобы ты мог получить доступ в этой функции к таймеру и мог им управлять
func myMetod1(timer1:NSTimer)
 {
  println("test") //покажет строку test
  timer1.invalidate() //остановит таймер который ты создал в главной функции viewDidLoad
 }
}
Что еще не понятно?
Mistin
0 / 0 / 0
Регистрация: 13.06.2012
Сообщений: 34
26.06.2014, 12:01  [ТС]     Нужна задержка между выполнениями действий #27
Возможно, я торможу, но никак не могу понять.
Просто на моём примере, если объяснишь, то я пойму.
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import UIKit
 
class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }
 
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    @IBAction func startButton(sender : UIButton) { //Кнопка, при нажатии на которую начинается действие
        let text = "123"
        for symbol in text {
            println("\(symbol)\n")
            //Тут ставим паузу, что бы цифры 1, 2 и 3 выводились с задержкой 1 секундой.
        }
 
    }
}
Вот код, что надо сделать чтобы ставилась пауза после строки: println("\(symbol)\n")
TexHuK
9 / 9 / 0
Регистрация: 19.10.2011
Сообщений: 102
26.06.2014, 12:20     Нужна задержка между выполнениями действий #28
можно так
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import UIKit
 
class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }
 
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    @IBAction func startButton(sender : UIButton) { //Кнопка, при нажатии на которую начинается действие
        let text = "123"
        for symbol in text {
            println("Цифра:"+symbol)
            sleep(1)
            //Тут ставим паузу, что бы цифры 1, 2 и 3 выводились с задержкой 1 секундой.
        }
 
    }
}
можно так

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import UIKit
 
class ViewController: UIViewController {
    
var i = 1
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }
 
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    @IBAction func startButton(sender : UIButton) { //Кнопка, при нажатии на которую начинается действие
        var  timer = NSTimer.scheduledTimerWithTimeInterval(1, target:self, selector: "myMetod:", userInfo: nil, repeats: true)
        }
 
func myMetod(timer:NSTimer){
println(i++)
if i == 3 {
timer.invalidate()
}
}
 
    }
}
можно вообще кучу способов найти, все зависит от того, какую задачу ты хочешь реализовать.
вот, посмотри наглядный пример для работы с таймером, правда на английском, зато все понятно даже по коду, 7 минут того стоит

Mistin
0 / 0 / 0
Регистрация: 13.06.2012
Сообщений: 34
26.06.2014, 12:41  [ТС]     Нужна задержка между выполнениями действий #29
Заработало, в консоле отображается нормально.
НО добавляю Label:
@IBOutlet var wordPrint : UILabel
И заменяю в методе строку
Objective-C
1
println(i++)
На эту:
Objective-C
1
wordPrint.text = i++
Отображается только последний символ почему-то. Как сделать чтобы показывался первый символ, потом второй и т.д. в Label?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.06.2014, 13:14     Нужна задержка между выполнениями действий
Еще ссылки по теме:
Delphi Задержка между запуском программ
Python задержка между запросами к url
Proxy. Задержка между запросами Node.js
ActionScript AS 3.0 Задержка между действиями при нажатии кнопки
Задержка между записью/чтением Serial-порта C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
TexHuK
9 / 9 / 0
Регистрация: 19.10.2011
Сообщений: 102
26.06.2014, 13:14     Нужна задержка между выполнениями действий #30
Objective-C
1
wordPrint.text = String(i++)
Yandex
Объявления
26.06.2014, 13:14     Нужна задержка между выполнениями действий
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru