Recording
How to make a pause and resume button for NSTimer in xcode 7!
2015-11-03 · 15 min
Machine transcript · wording, timing and speaker attribution may be wrong
Wording, speaker labels, and timestamps can still be wrong. A transcript does not establish that statements in the recording are factual. Use the source links and surrounding context.
Source information & transcript revisions
Transcript revisions
- rev_9e1406cad3d18d694b99a85007f1cdbdMachine-generated and unreviewed; may be wrong; not a verified quotation.enraw_asractive242 segments
Transcript
Hello and welcome to this video.
Segment details
0:01–0:03 · rev_9e1406cad3d18d694b99a85007f1cdbd_0And in this video, I'm going to attempt to
Segment details
0:04–0:07 · rev_9e1406cad3d18d694b99a85007f1cdbd_1show you how to make a pause and resume
Segment details
0:07–0:08 · rev_9e1406cad3d18d694b99a85007f1cdbd_2button for a game. So let's start a
Segment details
0:08–0:12 · rev_9e1406cad3d18d694b99a85007f1cdbd_3new project in Xcode and choose a one-side
Segment details
0:12–0:15 · rev_9e1406cad3d18d694b99a85007f1cdbd_4view, one, one-screen view, can't
Segment details
0:15–0:18 · rev_9e1406cad3d18d694b99a85007f1cdbd_5remember. So anyway, just get your— what's
Segment details
0:18–0:21 · rev_9e1406cad3d18d694b99a85007f1cdbd_6it called— and then get a You
Segment details
0:22–0:27 · rev_9e1406cad3d18d694b99a85007f1cdbd_7need a ViewController, which is this
Segment details
0:27–0:28 · rev_9e1406cad3d18d694b99a85007f1cdbd_8thing. Should be here already. And then we
Segment details
0:28–0:31 · rev_9e1406cad3d18d694b99a85007f1cdbd_9need to do right-click on here and do New
Segment details
0:32–0:34 · rev_9e1406cad3d18d694b99a85007f1cdbd_10File and do this
Segment details
0:34–0:38 · rev_9e1406cad3d18d694b99a85007f1cdbd_11one, and then just name it like Game or
Segment details
0:38–0:42 · rev_9e1406cad3d18d694b99a85007f1cdbd_12something. Doesn't really matter. And I
Segment details
0:43–0:46 · rev_9e1406cad3d18d694b99a85007f1cdbd_13think we change this to UIViewController.
Segment details
0:46–0:48 · rev_9e1406cad3d18d694b99a85007f1cdbd_14Was it actually? I can't remember.
Segment details
0:51–0:53 · rev_9e1406cad3d18d694b99a85007f1cdbd_15UIViewController. Yeah, I think that was
Segment details
0:59–1:01 · rev_9e1406cad3d18d694b99a85007f1cdbd_16it. Game or
Segment details
1:01–1:05 · rev_9e1406cad3d18d694b99a85007f1cdbd_17something. Okay,
Segment details
1:05–1:08 · rev_9e1406cad3d18d694b99a85007f1cdbd_18and then just save it, and then What
Segment details
1:11–1:16 · rev_9e1406cad3d18d694b99a85007f1cdbd_19do we do now? Okay, so we have our files
Segment details
1:17–1:20 · rev_9e1406cad3d18d694b99a85007f1cdbd_20up here. Okay, so first go to Storyboard,
Segment details
1:21–1:23 · rev_9e1406cad3d18d694b99a85007f1cdbd_21and what we want to do is create an image
Segment details
1:24–1:26 · rev_9e1406cad3d18d694b99a85007f1cdbd_22so it's like sliding across the screen,
Segment details
1:26–1:28 · rev_9e1406cad3d18d694b99a85007f1cdbd_23and that's the image we're going to pause.
Segment details
1:29–1:31 · rev_9e1406cad3d18d694b99a85007f1cdbd_24So type down the bottom ImageView and
Segment details
1:31–1:35 · rev_9e1406cad3d18d694b99a85007f1cdbd_25drag it on. Now we need an image, and we
Segment details
1:35–1:39 · rev_9e1406cad3d18d694b99a85007f1cdbd_26don't have anything in the supporting
Segment details
1:40–1:40 · rev_9e1406cad3d18d694b99a85007f1cdbd_27files.
Segment details
1:40–1:41 · rev_9e1406cad3d18d694b99a85007f1cdbd_28I guess we don't really need anything.
Segment details
1:46–1:47 · rev_9e1406cad3d18d694b99a85007f1cdbd_29Okay, it doesn't have to be an image. We
Segment details
1:49–1:50 · rev_9e1406cad3d18d694b99a85007f1cdbd_30can do a label or button. So let's do a
Segment details
1:51–1:53 · rev_9e1406cad3d18d694b99a85007f1cdbd_31label instead. Yeah, my label.
Segment details
1:54–1:58 · rev_9e1406cad3d18d694b99a85007f1cdbd_32Okay, so we have a label and we're going
Segment details
2:00–2:02 · rev_9e1406cad3d18d694b99a85007f1cdbd_33to make it scroll across the screen. So
Segment details
2:02–2:05 · rev_9e1406cad3d18d694b99a85007f1cdbd_34what we want in here is Game.h.
Segment details
2:05–2:11 · rev_9e1406cad3d18d694b99a85007f1cdbd_35What do we need? We need curly brackets,
Segment details
2:11–2:14 · rev_9e1406cad3d18d694b99a85007f1cdbd_36right? And then we want
Segment details
2:14–2:19 · rev_9e1406cad3d18d694b99a85007f1cdbd_37IBOutlet and then UILabel, and then just
Segment details
2:19–2:23 · rev_9e1406cad3d18d694b99a85007f1cdbd_38name your label something. And then we
Segment details
2:23–2:26 · rev_9e1406cad3d18d694b99a85007f1cdbd_39need a void— hold on, let me check my,
Segment details
2:26–2:29 · rev_9e1406cad3d18d694b99a85007f1cdbd_40my other game. Where is it?
Segment details
2:30–2:32 · rev_9e1406cad3d18d694b99a85007f1cdbd_41Game.h should be— so
Segment details
2:38–2:43 · rev_9e1406cad3d18d694b99a85007f1cdbd_42UIKit.
Segment details
2:43–2:45 · rev_9e1406cad3d18d694b99a85007f1cdbd_43Now for the IBOutlet, we need in below
Segment details
2:48–2:51 · rev_9e1406cad3d18d694b99a85007f1cdbd_44the UIViewController and then curly
Segment details
2:52–2:54 · rev_9e1406cad3d18d694b99a85007f1cdbd_45brackets and then Close
Segment details
2:54–2:59 · rev_9e1406cad3d18d694b99a85007f1cdbd_46curly brackets, and then we can do the
Segment details
2:59–3:00 · rev_9e1406cad3d18d694b99a85007f1cdbd_47voids at the end.
Segment details
3:00–3:01 · rev_9e1406cad3d18d694b99a85007f1cdbd_48So it should go underneath
Segment details
3:05–3:07 · rev_9e1406cad3d18d694b99a85007f1cdbd_49UIViewController. So let's
Segment details
3:07–3:11 · rev_9e1406cad3d18d694b99a85007f1cdbd_50go back. So we go underneath
Segment details
3:11–3:15 · rev_9e1406cad3d18d694b99a85007f1cdbd_51there. Yeah,
Segment details
3:15–3:16 · rev_9e1406cad3d18d694b99a85007f1cdbd_52and then we need an IBAction, so we can
Segment details
3:20–3:24 · rev_9e1406cad3d18d694b99a85007f1cdbd_53make a button. To— we need a button to
Segment details
3:25–3:27 · rev_9e1406cad3d18d694b99a85007f1cdbd_54pause and resume the game.
Segment details
3:28–3:28 · rev_9e1406cad3d18d694b99a85007f1cdbd_55So first of all, we can have pause.
Segment details
3:32–3:36 · rev_9e1406cad3d18d694b99a85007f1cdbd_56Oh, this is wrong. Hold on. We need
Segment details
3:36–3:40 · rev_9e1406cad3d18d694b99a85007f1cdbd_57selector and name selector pause,
Segment details
3:40–3:42 · rev_9e1406cad3d18d694b99a85007f1cdbd_58and then do it like this so you have ID
Segment details
3:44–3:46 · rev_9e1406cad3d18d694b99a85007f1cdbd_59sender. And we also need an IBAction for
Segment details
3:46–3:50 · rev_9e1406cad3d18d694b99a85007f1cdbd_60resume. So it should look like this.
Segment details
3:50–3:53 · rev_9e1406cad3d18d694b99a85007f1cdbd_61And we also need IBOutlet for our
Segment details
3:56–4:00 · rev_9e1406cad3d18d694b99a85007f1cdbd_62button, and we'll call it pause,
Segment details
4:00–4:02 · rev_9e1406cad3d18d694b99a85007f1cdbd_63and another one for resume.
Segment details
4:04–4:07 · rev_9e1406cad3d18d694b99a85007f1cdbd_64Let me turn my keyboard lights on because
Segment details
4:11–4:13 · rev_9e1406cad3d18d694b99a85007f1cdbd_65it's getting dark.
Segment details
4:13–4:14 · rev_9e1406cad3d18d694b99a85007f1cdbd_66Okay, let's see if we can get this to work
Segment details
4:18–4:19 · rev_9e1406cad3d18d694b99a85007f1cdbd_67properly. Go to your storyboard.
Segment details
4:20–4:23 · rev_9e1406cad3d18d694b99a85007f1cdbd_68Here it is. Get rid of this bit.
Segment details
4:24–4:25 · rev_9e1406cad3d18d694b99a85007f1cdbd_69Okay, no, not this one. Where was the one
Segment details
4:27–4:30 · rev_9e1406cad3d18d694b99a85007f1cdbd_70we had last time? The main storyboard.
Segment details
4:31–4:33 · rev_9e1406cad3d18d694b99a85007f1cdbd_71Yeah, that's it. Okay, now we need 2
Segment details
4:33–4:35 · rev_9e1406cad3d18d694b99a85007f1cdbd_72buttons. Drag it on
Segment details
4:35–4:38 · rev_9e1406cad3d18d694b99a85007f1cdbd_73the screen and just call it pause, and
Segment details
4:38–4:41 · rev_9e1406cad3d18d694b99a85007f1cdbd_74then copy and paste Copy,
Segment details
4:41–4:46 · rev_9e1406cad3d18d694b99a85007f1cdbd_75paste, yeah. And we'll name it Resume.
Segment details
4:46–4:49 · rev_9e1406cad3d18d694b99a85007f1cdbd_76Okay, so what's next? That's a good
Segment details
4:52–4:55 · rev_9e1406cad3d18d694b99a85007f1cdbd_77question. Click on the top bit, on the top
Segment details
4:55–4:58 · rev_9e1406cad3d18d694b99a85007f1cdbd_78border, then click on this one, the 6th
Segment details
4:58–5:01 · rev_9e1406cad3d18d694b99a85007f1cdbd_79tab along. 1, 2, 3, 4, 5, 6.
Segment details
5:01–5:03 · rev_9e1406cad3d18d694b99a85007f1cdbd_80And you'll find— okay, so that
Segment details
5:04–5:07 · rev_9e1406cad3d18d694b99a85007f1cdbd_81didn't work.
Segment details
5:08–5:08 · rev_9e1406cad3d18d694b99a85007f1cdbd_82There's something I'm missing. Oh yeah,
Segment details
5:14–5:15 · rev_9e1406cad3d18d694b99a85007f1cdbd_83we have to do this. Change class to,
Segment details
5:15–5:18 · rev_9e1406cad3d18d694b99a85007f1cdbd_84to game or something. Yeah, that's it.
Segment details
5:20–5:22 · rev_9e1406cad3d18d694b99a85007f1cdbd_85Okay, it should work now. But then, yep,
Segment details
5:22–5:25 · rev_9e1406cad3d18d694b99a85007f1cdbd_86we have label, drag it to label, and
Segment details
5:25–5:28 · rev_9e1406cad3d18d694b99a85007f1cdbd_87pause, drag to pause. Resume can be
Segment details
5:29–5:32 · rev_9e1406cad3d18d694b99a85007f1cdbd_88dragged to resume. And we want our— where
Segment details
5:32–5:36 · rev_9e1406cad3d18d694b99a85007f1cdbd_89do I be? Actions. Oh, here. Received
Segment details
5:36–5:39 · rev_9e1406cad3d18d694b99a85007f1cdbd_90actions. Pause and do touch up inside.
Segment details
5:40–5:42 · rev_9e1406cad3d18d694b99a85007f1cdbd_91And resume, touch up inside.
Segment details
5:44–5:47 · rev_9e1406cad3d18d694b99a85007f1cdbd_92Okay, so we have our buttons and our
Segment details
5:47–5:49 · rev_9e1406cad3d18d694b99a85007f1cdbd_93labels declared. We need to write the code
Segment details
5:49–5:52 · rev_9e1406cad3d18d694b99a85007f1cdbd_94to make the— well, we need to get rid of
Segment details
5:53–5:55 · rev_9e1406cad3d18d694b99a85007f1cdbd_95this first. Implementation game or
Segment details
5:55–5:59 · rev_9e1406cad3d18d694b99a85007f1cdbd_96something. Okay, make some room.
Segment details
5:59–6:02 · rev_9e1406cad3d18d694b99a85007f1cdbd_97Okay, so we want the label to move across
Segment details
6:04–6:07 · rev_9e1406cad3d18d694b99a85007f1cdbd_98the screen. Let's just move these down
Segment details
6:07–6:09 · rev_9e1406cad3d18d694b99a85007f1cdbd_99here.
Segment details
6:09–6:09 · rev_9e1406cad3d18d694b99a85007f1cdbd_100We want this to move across the screen,
Segment details
6:12–6:13 · rev_9e1406cad3d18d694b99a85007f1cdbd_101so how do we do that? That's a good
Segment details
6:14–6:17 · rev_9e1406cad3d18d694b99a85007f1cdbd_102question because I can't remember off the
Segment details
6:17–6:20 · rev_9e1406cad3d18d694b99a85007f1cdbd_103top of my head.
Segment details
6:20–6:20 · rev_9e1406cad3d18d694b99a85007f1cdbd_104Okay, where is— but we need a timer,
Segment details
6:28–6:31 · rev_9e1406cad3d18d694b99a85007f1cdbd_105so let's make a timer. This can go— goes
Segment details
6:32–6:36 · rev_9e1406cad3d18d694b99a85007f1cdbd_106here, I think. So NSTimer,
Segment details
6:36–6:37 · rev_9e1406cad3d18d694b99a85007f1cdbd_107and we will call it— what
Segment details
6:40–6:45 · rev_9e1406cad3d18d694b99a85007f1cdbd_108should we call it— labelTimer.
Segment details
6:46–6:48 · rev_9e1406cad3d18d694b99a85007f1cdbd_109Right, and then we go to M, and then we
Segment details
6:52–6:56 · rev_9e1406cad3d18d694b99a85007f1cdbd_110do— where's
Segment details
6:56–7:01 · rev_9e1406cad3d18d694b99a85007f1cdbd_111viewDidLoad? So viewDidLoad is what
Segment details
7:01–7:04 · rev_9e1406cad3d18d694b99a85007f1cdbd_112happens when the game starts. We need
Segment details
7:04–7:07 · rev_9e1406cad3d18d694b99a85007f1cdbd_113the code. Let me get it from my other game
Segment details
7:07–7:09 · rev_9e1406cad3d18d694b99a85007f1cdbd_114for the timer. It's quite long.
Segment details
7:10–7:11 · rev_9e1406cad3d18d694b99a85007f1cdbd_115Where is it? No, game.m.
Segment details
7:19–7:21 · rev_9e1406cad3d18d694b99a85007f1cdbd_116So copy this just like it,
Segment details
7:26–7:29 · rev_9e1406cad3d18d694b99a85007f1cdbd_117like it, like it says on my screen. Go
Segment details
7:29–7:32 · rev_9e1406cad3d18d694b99a85007f1cdbd_118back to your game. Now just paste it in
Segment details
7:32–7:35 · rev_9e1406cad3d18d694b99a85007f1cdbd_119there. Now movement
Segment details
7:35–7:39 · rev_9e1406cad3d18d694b99a85007f1cdbd_120timer should be changed to your timer
Segment details
7:39–7:41 · rev_9e1406cad3d18d694b99a85007f1cdbd_121name. Ours was labelTimer. And this bit
Segment details
7:41–7:44 · rev_9e1406cad3d18d694b99a85007f1cdbd_122will be in the void here. We need to make
Segment details
7:44–7:47 · rev_9e1406cad3d18d694b99a85007f1cdbd_123a void right down here, so put void,
Segment details
7:47–7:50 · rev_9e1406cad3d18d694b99a85007f1cdbd_124and then let's name it LabelMovement.
Segment details
7:51–7:53 · rev_9e1406cad3d18d694b99a85007f1cdbd_125And then this should be changed to
Segment details
7:56–7:57 · rev_9e1406cad3d18d694b99a85007f1cdbd_126LabelMovement. And then we'll make a void
Segment details
7:57–8:01 · rev_9e1406cad3d18d694b99a85007f1cdbd_127in here called LabelMovement, and this
Segment details
8:01–8:05 · rev_9e1406cad3d18d694b99a85007f1cdbd_128is where the code is going to go to make
Segment details
8:06–8:07 · rev_9e1406cad3d18d694b99a85007f1cdbd_129our label move. So I
Segment details
8:07–8:11 · rev_9e1406cad3d18d694b99a85007f1cdbd_130think I'm doing this right.
Segment details
8:11–8:12 · rev_9e1406cad3d18d694b99a85007f1cdbd_131So the next thing we need to do is label,
Segment details
8:18–8:20 · rev_9e1406cad3d18d694b99a85007f1cdbd_132choose this one, .center equals
Segment details
8:22–8:25 · rev_9e1406cad3d18d694b99a85007f1cdbd_133CGPoint.make, and we shall do
Segment details
8:25–8:29 · rev_9e1406cad3d18d694b99a85007f1cdbd_134label— whoops— label.center
Segment details
8:30–8:33 · rev_9e1406cad3d18d694b99a85007f1cdbd_135Oh, we've done label wrong. It should be
Segment details
8:35–8:37 · rev_9e1406cad3d18d694b99a85007f1cdbd_136capital L.
Segment details
8:37–8:37 · rev_9e1406cad3d18d694b99a85007f1cdbd_137I spelled it wrong. No, it's not
Segment details
8:42–8:45 · rev_9e1406cad3d18d694b99a85007f1cdbd_138capital L.
Segment details
8:45–8:46 · rev_9e1406cad3d18d694b99a85007f1cdbd_139Yeah,
Segment details
8:48–8:48 · rev_9e1406cad3d18d694b99a85007f1cdbd_140.center.x and then
Segment details
8:50–8:53 · rev_9e1406cad3d18d694b99a85007f1cdbd_141label.center.y, close brackets
Segment details
8:54–8:58 · rev_9e1406cad3d18d694b99a85007f1cdbd_142and then semicolon. Now we want it to move
Segment details
8:58–9:00 · rev_9e1406cad3d18d694b99a85007f1cdbd_143to the right, so So we go on the
Segment details
9:00–9:03 · rev_9e1406cad3d18d694b99a85007f1cdbd_144x-coordinate and we should do— is
Segment details
9:03–9:07 · rev_9e1406cad3d18d694b99a85007f1cdbd_145it plus? So let's do +10,
Segment details
9:07–9:08 · rev_9e1406cad3d18d694b99a85007f1cdbd_146and then let's see if it works.
Segment details
9:11–9:13 · rev_9e1406cad3d18d694b99a85007f1cdbd_147There it goes, it's moving! Yeah, we did
Segment details
9:22–9:24 · rev_9e1406cad3d18d694b99a85007f1cdbd_148it! Okay. So let's
Segment details
9:24–9:28 · rev_9e1406cad3d18d694b99a85007f1cdbd_149close this simulator. Now I want simulator
Segment details
9:28–9:32 · rev_9e1406cad3d18d694b99a85007f1cdbd_150on— that's fine. Close simulator.
Segment details
9:32–9:35 · rev_9e1406cad3d18d694b99a85007f1cdbd_151Then go back to tutorial. Okay, so we want
Segment details
9:38–9:42 · rev_9e1406cad3d18d694b99a85007f1cdbd_152the label to keep reappearing
Segment details
9:43–9:46 · rev_9e1406cad3d18d694b99a85007f1cdbd_153on the screen after it's disappeared. So
Segment details
9:46–9:49 · rev_9e1406cad3d18d694b99a85007f1cdbd_154how do we do that? Well, we do an if
Segment details
9:49–9:52 · rev_9e1406cad3d18d694b99a85007f1cdbd_155statement. If label.center
Segment details
9:52–9:56 · rev_9e1406cad3d18d694b99a85007f1cdbd_156equals— no, if label.x equal
Segment details
9:56–10:01 · rev_9e1406cad3d18d694b99a85007f1cdbd_157is greater than— greater
Segment details
10:01–10:06 · rev_9e1406cad3d18d694b99a85007f1cdbd_158than what? Greater than— off the edge of
Segment details
10:07–10:11 · rev_9e1406cad3d18d694b99a85007f1cdbd_159the screen should be like 256
Segment details
10:11–10:15 · rev_9e1406cad3d18d694b99a85007f1cdbd_1603. So look at the X here. So 320.
Segment details
10:20–10:23 · rev_9e1406cad3d18d694b99a85007f1cdbd_161So if it's greater than 320, it should
Segment details
10:26–10:29 · rev_9e1406cad3d18d694b99a85007f1cdbd_162reappear at -100.
Segment details
10:29–10:33 · rev_9e1406cad3d18d694b99a85007f1cdbd_163320 and -100.
Segment details
10:35–10:37 · rev_9e1406cad3d18d694b99a85007f1cdbd_164Okay, so go back to game or something. M.
Segment details
10:38–10:40 · rev_9e1406cad3d18d694b99a85007f1cdbd_165If it's greater than 320 Then
Segment details
10:40–10:46 · rev_9e1406cad3d18d694b99a85007f1cdbd_166we shall make it label.center equals
Segment details
10:46–10:50 · rev_9e1406cad3d18d694b99a85007f1cdbd_167CGPoint make,
Segment details
10:51–10:52 · rev_9e1406cad3d18d694b99a85007f1cdbd_168and then press Enter, and then do— do—
Segment details
10:54–10:58 · rev_9e1406cad3d18d694b99a85007f1cdbd_169what was it?
Segment details
10:58–10:59 · rev_9e1406cad3d18d694b99a85007f1cdbd_170Can't remember. -100, see,
Segment details
11:02–11:06 · rev_9e1406cad3d18d694b99a85007f1cdbd_171and then I think this can be 0.
Segment details
11:06–11:07 · rev_9e1406cad3d18d694b99a85007f1cdbd_172No, it should be 200.
Segment details
11:12–11:13 · rev_9e1406cad3d18d694b99a85007f1cdbd_173Whoops. Okay, click on my label.
Segment details
11:15–11:18 · rev_9e1406cad3d18d694b99a85007f1cdbd_174It was -100 and y-axis was 200.
Segment details
11:20–11:23 · rev_9e1406cad3d18d694b99a85007f1cdbd_175Should be 200.
Segment details
11:26–11:33 · rev_9e1406cad3d18d694b99a85007f1cdbd_176So if label.x is greater than 320,
Segment details
11:34–11:36 · rev_9e1406cad3d18d694b99a85007f1cdbd_177labelAtCenter CGPoint.make, and this
Segment details
11:37–11:40 · rev_9e1406cad3d18d694b99a85007f1cdbd_178should keep repeating over and over.
Segment details
11:40–11:44 · rev_9e1406cad3d18d694b99a85007f1cdbd_179That's it. Yep, it keeps reappearing.
Segment details
11:51–11:53 · rev_9e1406cad3d18d694b99a85007f1cdbd_180Okay, simulator, where are you?
Segment details
11:54–11:55 · rev_9e1406cad3d18d694b99a85007f1cdbd_181Ah, doesn't matter. Anyway, it was a bit
Segment details
11:57–11:59 · rev_9e1406cad3d18d694b99a85007f1cdbd_182too close on the left side of the screen,
Segment details
12:00–12:01 · rev_9e1406cad3d18d694b99a85007f1cdbd_183so let's change this to 400.
Segment details
12:02–12:04 · rev_9e1406cad3d18d694b99a85007f1cdbd_184So there it goes off the screen and
Segment details
12:11–12:12 · rev_9e1406cad3d18d694b99a85007f1cdbd_185reappears.
Segment details
12:12–12:13 · rev_9e1406cad3d18d694b99a85007f1cdbd_186Okay, let's just minimize this. And this—
Segment details
12:16–12:18 · rev_9e1406cad3d18d694b99a85007f1cdbd_187oh, look at all this crap. Can we move
Segment details
12:18–12:22 · rev_9e1406cad3d18d694b99a85007f1cdbd_188this? Move it here? Why can't I move it?
Segment details
12:22–12:25 · rev_9e1406cad3d18d694b99a85007f1cdbd_189Okay, let's just close it, quit,
Segment details
12:31–12:33 · rev_9e1406cad3d18d694b99a85007f1cdbd_190and run it again. No, why are
Segment details
12:35–12:38 · rev_9e1406cad3d18d694b99a85007f1cdbd_191you on the left side? I don't want you on
Segment details
12:38–12:40 · rev_9e1406cad3d18d694b99a85007f1cdbd_192this screen.
Segment details
12:40–12:40 · rev_9e1406cad3d18d694b99a85007f1cdbd_193We could— hold
Segment details
12:46–12:50 · rev_9e1406cad3d18d694b99a85007f1cdbd_194on. So where were we?
Segment details
12:50–12:53 · rev_9e1406cad3d18d694b99a85007f1cdbd_195So the simulator is moving the label. So
Segment details
12:53–12:56 · rev_9e1406cad3d18d694b99a85007f1cdbd_196we want a— we
Segment details
12:56–13:01 · rev_9e1406cad3d18d694b99a85007f1cdbd_197need to make our buttons work for pause
Segment details
13:02–13:03 · rev_9e1406cad3d18d694b99a85007f1cdbd_198and resume. Okay, so go into .m and
Segment details
13:03–13:07 · rev_9e1406cad3d18d694b99a85007f1cdbd_199we do like this, baby action, and put
Segment details
13:07–13:10 · rev_9e1406cad3d18d694b99a85007f1cdbd_200pause. Get rid of this
Segment details
13:10–13:14 · rev_9e1406cad3d18d694b99a85007f1cdbd_201extra stuff and then open curly brackets.
Segment details
13:14–13:17 · rev_9e1406cad3d18d694b99a85007f1cdbd_202And what we want here is when you press
Segment details
13:17–13:20 · rev_9e1406cad3d18d694b99a85007f1cdbd_203pause, it does invalidate.
Segment details
13:20–13:23 · rev_9e1406cad3d18d694b99a85007f1cdbd_204So we need labelTimer and then invalidate,
Segment details
13:24–13:27 · rev_9e1406cad3d18d694b99a85007f1cdbd_205and that should be all. So when you press
Segment details
13:29–13:32 · rev_9e1406cad3d18d694b99a85007f1cdbd_206pause, it should stop.
Segment details
13:32–13:34 · rev_9e1406cad3d18d694b99a85007f1cdbd_207There, it stops. So how do we restart it?
Segment details
13:36–13:39 · rev_9e1406cad3d18d694b99a85007f1cdbd_208That's easy. We do IBAction and
Segment details
13:39–13:44 · rev_9e1406cad3d18d694b99a85007f1cdbd_209we type in resume.
Segment details
13:44–13:45 · rev_9e1406cad3d18d694b99a85007f1cdbd_210And then we do just copy and paste your
Segment details
13:49–13:53 · rev_9e1406cad3d18d694b99a85007f1cdbd_211timer code into here,
Segment details
13:54–13:56 · rev_9e1406cad3d18d694b99a85007f1cdbd_212and then should work.
Segment details
14:01–14:03 · rev_9e1406cad3d18d694b99a85007f1cdbd_213Pause, resume, pause,
Segment details
14:05–14:08 · rev_9e1406cad3d18d694b99a85007f1cdbd_214resume. So what you could use this for is
Segment details
14:08–14:11 · rev_9e1406cad3d18d694b99a85007f1cdbd_215imagine if you had a game and these were
Segment details
14:11–14:13 · rev_9e1406cad3d18d694b99a85007f1cdbd_216like characters moving. On the timer.
Segment details
14:13–14:15 · rev_9e1406cad3d18d694b99a85007f1cdbd_217And so if you press pause, it stops the
Segment details
14:16–14:18 · rev_9e1406cad3d18d694b99a85007f1cdbd_218timer, and then if you press resume, it
Segment details
14:18–14:21 · rev_9e1406cad3d18d694b99a85007f1cdbd_219runs the code for the timer again, so it
Segment details
14:21–14:23 · rev_9e1406cad3d18d694b99a85007f1cdbd_220starts moving again. So it's quite easy,
Segment details
14:24–14:26 · rev_9e1406cad3d18d694b99a85007f1cdbd_221quite simple to get your head around. All
Segment details
14:26–14:29 · rev_9e1406cad3d18d694b99a85007f1cdbd_222you need to do is declare these buttons
Segment details
14:29–14:31 · rev_9e1406cad3d18d694b99a85007f1cdbd_223and then make an NSTimer, and then do a
Segment details
14:32–14:34 · rev_9e1406cad3d18d694b99a85007f1cdbd_224void for label movement, and then
Segment details
14:35–14:37 · rev_9e1406cad3d18d694b99a85007f1cdbd_225IBActions for pause and resume.
Segment details
14:38–14:40 · rev_9e1406cad3d18d694b99a85007f1cdbd_226Pretty simple. And then link them up.
Segment details
14:42–14:45 · rev_9e1406cad3d18d694b99a85007f1cdbd_227Make sure they're all linked up like this.
Segment details
14:47–14:48 · rev_9e1406cad3d18d694b99a85007f1cdbd_228So you can see linked up stuff. See, this
Segment details
14:50–14:53 · rev_9e1406cad3d18d694b99a85007f1cdbd_229is linked up, received actions, and these
Segment details
14:53–14:55 · rev_9e1406cad3d18d694b99a85007f1cdbd_230are outlets. So yeah, pretty simple.
Segment details
14:55–14:59 · rev_9e1406cad3d18d694b99a85007f1cdbd_231Hope it helps you. If you have any
Segment details
15:00–15:02 · rev_9e1406cad3d18d694b99a85007f1cdbd_232questions, just ask me and I'll try, but
Segment details
15:02–15:05 · rev_9e1406cad3d18d694b99a85007f1cdbd_233I'm still new to coding. So I'm just
Segment details
15:05–15:07 · rev_9e1406cad3d18d694b99a85007f1cdbd_234trying to teach you what I know already.
Segment details
15:08–15:09 · rev_9e1406cad3d18d694b99a85007f1cdbd_235So don't think I'm like some kind of
Segment details
15:10–15:12 · rev_9e1406cad3d18d694b99a85007f1cdbd_236expert because I'm not. I only started
Segment details
15:12–15:14 · rev_9e1406cad3d18d694b99a85007f1cdbd_237about 2 weeks ago. So yeah, coding isn't
Segment details
15:15–15:18 · rev_9e1406cad3d18d694b99a85007f1cdbd_238that difficult, I guess, like for the
Segment details
15:18–15:20 · rev_9e1406cad3d18d694b99a85007f1cdbd_239basic stuff. Anyway, see you in the next
Segment details
15:20–15:23 · rev_9e1406cad3d18d694b99a85007f1cdbd_240video.
Segment details
15:23–15:24 · rev_9e1406cad3d18d694b99a85007f1cdbd_241