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

Swift

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

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

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

Здравствуйте.
Подскажите, как сделать, чтобы текст выводился с задеркой (например в одну секунду).
Например:
Код
println("Ла-ла-ла")
//А тут задержка в 1 секунду.
println("Бла-бла-бла")
На самом деле код нечно по другому будет выглядеть (не в консоле будет вывод).
Но мне надо, чтобы вывелся "Ла-ла-ла" и через секунду "Бла-бла-бла".
Заранее спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.06.2014, 19:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Нужна задержка между выполнениями действий (Swift):

Задержка между выполнениями функций макроса. - Visual Basic
макрос выполняет подряд функцию А, функцию Б, функцию В, ... Как сделать задержку, например 1секунду, между выполнением функий?

Задержка между действиями - Программирование Android
Есть такой вот метод: public void move(int x) { while (this.x != x) { /* Ваш код */ this.x += 1; } } Как...

Задержка между командами - C++ Linux
Добрый день! я хочу спросить, почему при выполнении кода int y=0; while(1) { while(y++<1000000);y=0; printf("z "); } не...

AS 3.0 Задержка между клипами - ActionScript
Здравствуйте. Порылся по форуму, видел несколько вариантов ответо на нужный мне вопрос, но не смог его решить. Какая задача. Есть...

Нужна задержка в выполнении программы или как использовать таймер? - Delphi
Доброго времени суток:) Суть программы: есть круглая мишень и нужно сделать 10 выстрелов, координаты x, y считываются из таблицы и для...

Задержка между вызовами методами - C#
Всем привет.Подскажите пожалуйста. В одном месте кода вызываю метод А. Сейчас мне надо после метода A добавить вызов метода B через 3...

41
TexHuK
9 / 9 / 0
Регистрация: 19.10.2011
Сообщений: 102
24.06.2014, 15:14 #16
Цитата Сообщение от Xavier Посмотреть сообщение
конечно оно не будет работать, лол
ну в objc все так было
в swift-e поменялось

ну а как остановить таймер например из метода1?
пытаюсь обратиться к timer1, но область видимости не позволяет это сделать.
может есть возможность объявить глобальный таймер? что бы можно было к нему обратиться из любой части класса?
0
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ми и компанией разбираться. Благо литература для этого есть и она достаточно удобная и понятная.
1
TexHuK
9 / 9 / 0
Регистрация: 19.10.2011
Сообщений: 102
24.06.2014, 15:50 #18
Цитата Сообщение от Xavier Посмотреть сообщение
В таком случае советую все таки для начала с основами синтаксиса ознакомиться, а потом уже с NSTimer-aми и компанией разбираться. Благо литература для этого есть и она достаточно удобная и понятная.
ну как бы основы учатся, в принципе нечего сложного, практика тоже нужна, есть только некоторое недопонимание как всегда. Спасибо конечно за пример, только я вот не пойму, а если у меня много таких переменных? Мне их все перечислять в аргументах функции? Т. е. глобального объявления переменных тут не работает?
0
Xavier
in god we trust
74 / 74 / 8
Регистрация: 20.04.2012
Сообщений: 201
24.06.2014, 16:07 #19
Нет ну почему же не работает, все работает. Хочешь как глобальную объявляй вне класса, хочешь как свойство класса объявляй, все на твое усмотрение. Просто в данном случае это более традиционный метод.
1
TexHuK
9 / 9 / 0
Регистрация: 19.10.2011
Сообщений: 102
24.06.2014, 16:46 #20
Вот теперь все встало на свои места
0
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.
    } 
}
А что надо прописать, чтобы в конкретном месте сработал этот таймер?
0
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)
 {
 //тут код
 }
}
0
Mistin
0 / 0 / 0
Регистрация: 13.06.2012
Сообщений: 34
26.06.2014, 11:00  [ТС] #23
Так...а объявлять её как? Я имею в виду, прописывают я потом: myMethod1(timer1: А ТУТ ЧТО ПИСАТЬ?)
Или как его тогда ставить?
0
TexHuK
9 / 9 / 0
Регистрация: 19.10.2011
Сообщений: 102
26.06.2014, 11:11 #24
Цитата Сообщение от Mistin Посмотреть сообщение
Так...а объявлять её как? Я имею в виду, прописывают я потом: myMethod1(timer1: А ТУТ ЧТО ПИСАТЬ?)
Или как его тогда ставить?
я тебе уже рабочий код привел, все как есть, так и пишешь.
0
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)?
0
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
 }
}
Что еще не понятно?
0
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")
0
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 минут того стоит

0
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?
0
TexHuK
9 / 9 / 0
Регистрация: 19.10.2011
Сообщений: 102
26.06.2014, 13:14 #30
Objective-C
1
wordPrint.text = String(i++)
0
26.06.2014, 13:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.06.2014, 13:14
Привет! Вот еще темы с ответами:

Задержка между запуском программ - Delphi
подскажите пожалуйста!!!!!!!!! вопрос такой : есть кнопка по ней вызываются два экзешника как сделать так чтобы экзешники запускались с...

задержка между запросами к url - Python
Здравствуйте господа! Сегодня начал собирать ссылки из поисковой выдачи мейл.ру. И судя по всему меня там заблокировали, не совсем меня ,...

задержка между запусками BackgroundWorker'ов - Visual Basic .NET
Всем доброго времени суток в следующем коде два BackgroundWorker'а пишут в ListBox процент своего выполнения(с задержкой 1 секунда) ...

Proxy. Задержка между запросами - Node.js
Мы используем API, который имеет лимит 1 запрос/секунду. Запросы идут из нескольких мест. Может есть какое-то готовое решение proxy...


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Опции темы

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