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

Swift

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

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

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

Здравствуйте.
Подскажите, как сделать, чтобы текст выводился с задеркой (например в одну секунду).
Например:
Код
println("Ла-ла-ла")
//А тут задержка в 1 секунду.
println("Бла-бла-бла")
На самом деле код нечно по другому будет выглядеть (не в консоле будет вывод).
Но мне надо, чтобы вывелся "Ла-ла-ла" и через секунду "Бла-бла-бла".
Заранее спасибо!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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?
TexHuK
9 / 9 / 0
Регистрация: 19.10.2011
Сообщений: 102
26.06.2014, 13:14     Нужна задержка между выполнениями действий #30
Objective-C
1
wordPrint.text = String(i++)
Mistin
0 / 0 / 0
Регистрация: 13.06.2012
Сообщений: 34
26.06.2014, 13:24  [ТС]     Нужна задержка между выполнениями действий #31
Ок, попробуй так. Всё равно не работает.
TexHuK
9 / 9 / 0
Регистрация: 19.10.2011
Сообщений: 102
26.06.2014, 13:48     Нужна задержка между выполнениями действий #32
Цитата Сообщение от Mistin Посмотреть сообщение
Ок, попробуй так. Всё равно не работает.
я понял

Objective-C
1
2
3
4
5
6
7
func  myMetod(timer:NSTimer)
{
wordPrint.text = wordPrint.text + String(i++)
if i == 4 {
timer.invalidate()
}
}
Mistin
0 / 0 / 0
Регистрация: 13.06.2012
Сообщений: 34
26.06.2014, 13:57  [ТС]     Нужна задержка между выполнениями действий #33
Работает не так как надо. У меня работает по зареджке только в консоле, а в симуляторе неправильно.
Это только у меня так?
TexHuK
9 / 9 / 0
Регистрация: 19.10.2011
Сообщений: 102
26.06.2014, 14:06     Нужна задержка между выполнениями действий #34
я не знаю, у меня в симуляторе работает так как надо, покажи еще раз весь свой код
циферки появляются друг за другом
Mistin
0 / 0 / 0
Регистрация: 13.06.2012
Сообщений: 34
26.06.2014, 16:16  [ТС]     Нужна задержка между выполнениями действий #35
О...пересоздал проект. Повторил код и заработало! СПС, ребят)

Добавлено через 2 часа 0 минут
Есть ещё вопрос. Я вот создаю массив:
Objective-C
1
2
3
var word = ["qwe"]
word[1] = "rty"
println("\(word[1])")
Не работает.
Почему то не хочет создавать в массиве ещё одно место. А вот изменять я массив могу, но добавлять нет.
Как сделать, чтобы в массив я мог добавлять элементы?
Xavier
in god we trust
74 / 74 / 8
Регистрация: 20.04.2012
Сообщений: 201
26.06.2014, 16:48     Нужна задержка между выполнениями действий #36
Цитата Сообщение от Mistin Посмотреть сообщение
Как сделать, чтобы в массив я мог добавлять элементы?
Objective-C
1
2
3
word.append("rty")
//или так:
word+="rty"
Mistin
0 / 0 / 0
Регистрация: 13.06.2012
Сообщений: 34
26.06.2014, 18:45  [ТС]     Нужна задержка между выполнениями действий #37
Можете жать комментарий к коду?

Добавлено через 1 час 55 минут
Мой пост выше не актуален.
У меня есть кнопка, которая должна ставить на паузу этот таймер. Так вот, как его приостановить, чтобы потом можно было легко продолжить с того же места.
TexHuK
9 / 9 / 0
Регистрация: 19.10.2011
Сообщений: 102
26.06.2014, 19:21     Нужна задержка между выполнениями действий #38
Цитата Сообщение от Mistin Посмотреть сообщение
У меня есть кнопка, которая должна ставить на паузу этот таймер. Так вот, как его приостановить, чтобы потом можно было легко продолжить с того же места.
я очень терпеливый
Посмотри пожалуйста вот это видео
http://www.youtube.com/watch?v=ZzmrC8FLzaw
там всего 7 минут, и ты поймешь как ставить и как снимать с паузы с помощью таймера.

а так обычно условие создают, типа истина и ложь
истина код выполняется, ложь код не выполняется
Mistin
0 / 0 / 0
Регистрация: 13.06.2012
Сообщений: 34
27.06.2014, 11:49  [ТС]     Нужна задержка между выполнениями действий #39
Objective-C
1
истина код выполняется, ложь код не выполняется
Спасибо. Не знал, сильно помог)

Добавлено через 16 часов 26 минут
Не подскажите, как добавить текстовое поле, в котром несколько строк (ну как Text Field, но в нём 1 строка только, а мне надо, чтобы можно было целый текст добавить). Заранее спс.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.06.2014, 13:13     Нужна задержка между выполнениями действий
Еще ссылки по теме:

Python задержка между запросами к url
ActionScript AS 3.0 Задержка между действиями при нажатии кнопки
Нужна задержка в выполнении программы или как использовать таймер? Delphi
Proxy. Задержка между запросами Node.js

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

Или воспользуйтесь поиском по форуму:
Victorianec
20 / 20 / 6
Регистрация: 09.01.2014
Сообщений: 118
27.06.2014, 13:13     Нужна задержка между выполнениями действий #40
UITextView - думаю то, что вам нужно.
Yandex
Объявления
27.06.2014, 13:13     Нужна задержка между выполнениями действий
Ответ Создать тему
Опции темы

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