How to Load MKMapKitView & add Pin or Marker using swift

Loading map on your iOS application’s MKMapKitView is very easy. Just drug and drop. To add a pin or marker, write some simple codes in swift. Let’s begin:

Create a new “Single View” project in Xcode. Select swift as language.

  1. Open Main.stroyboard from Project explorer. You will see the ViewController.
    MKMapKitView
  2. Focus on Object library. It is at bottom right corner of Utility panel. Find out Map Kit View. If you can’t find out it, take help of filter box. Filter box is located at the bottom of the Object library. Check the screenshot.
    MKMapKitView
  3. Drag and drop the Map Kit View in View Controller. Resize Map Kit View so that it fills the full ViewController. Add appropriate auto layouts.Add framework
  4. Now we have to import MapKitView framework in our project. So,  select project (1) > Target app (2). Open Build Phases tab (3).
  5. Expand Link Binary with Libraries (5). Click + button (5)Find MapKit framework
  6. Search for MapKit.framework. Once you find the framework, select it. Then click Add button.
  7. Now run the app.

You application will be loaded. You will see a nice map on your simulator.

How to add Marker or Pin on MKMapKitView

We’ll add a marker or pin on MKMapKitView. Suppose we want to show the pin on Lanai island of Hawaii. Latitude and longitude of the location are 20.836864 and -156.874269. It will require only 3 steps.

IBOutlet

  1. Make an IBOutlet of MKMapKitView in ViewController.swift file. I used mapView as outlet name.

Import MapKit in ViewController:

2. Now write a method to load the pin / Marker:

3. Initially, the map focuses user’s current location. However, we’ve to move the focus to the point where our pin is located. To do that, add another method:

Finally call above 2 methods in ViewDidLoad.

Run the app.

You will see the pin in on lanai Island of Hawaii. You may be wondering, where do I get latitude longitude. Take help of google map to find latitude and longitude of any location on earth.

Happy Coding!!!

How to load HTML code or file in UIWebView using swift?

Let me tell you my one secret about iOS designing. Sometime, in our design, we have to use table views / grids for example bank statement. If you are familiar with iOS designing and auto layout, you already know how difficult it is to design complex tables or grids. In such situations, I use UIWebView. In background I prepare an html source code, then display the code in web view. Today I’ll tell you how to load source codes in web view using swift. After that, I’ll show how to load local html file in web view.
 1. Create an iOS application in Xcode.
2. Add a web view in the View controller of the storyboard

UIWebView3. Drag and drop web view’s IBOutlet to our ViewController.swift

4. Write a method to load string in UIWebView

In the above code, we created a constant (variable) htmlCode and wrote some html codes there. In the second line we loaded the htmlCode in our web view.

5. Call the method in ViewDidLoad:
Run the code and see what have you done.

Load local HTML file in UIWebView

Writing source codes in ViewController is painful and time wasting. Better approach is to create html file in Dreamweaver or Sublimetext or any other html editor. We’ll save that file in iOS project and load in web view. So, let’s begin our work.
  1. Create an iOS application in Xcode.
  2. Add a web view in the View controller of the storyboard
    screen-shot-2016-09-13-at-10-45-27-am
  3. Drag and drop web view’s IBOutlet to our ViewController.swift
  4. Create an html file using Sublime text or Dreamweaver or any other html editor. Save the file in a folder and open that folder.screen-shot-2016-09-20-at-10-06-44-pm
  5. Drag the file from folder to our Xcode’s Project Navigator. After you drag and drop, a dialog box will appear. In the dialog box check the “Copy items if needed” checkbox.
  6. Write a method to load local html in UIWebView
  7. Call loadHtmlFile() method in viewDidLoad method:

You can download the whole project from github

How to load HTML url in webview using swift

Well, it’s very easy to load HTML url in a web view using swift. Suppose we want to show https://www.google.com in a web view in our iOS application. We’ll do that in 4 easy steps. Let me tell you them step by step.

  1. First create an iOS application in Xcode.
    Add a WebView in the ViewController of the storyboard. Do not forget to add auto layout to WebView, otherwise you may can’t see the WebView.screen-shot-2016-09-13-at-10-45-27-am
  2. Drag and drop WebView’s IBOutlet to our ViewController.swift and name it: webView
  3. Now we’ll create a new method in ViewController.swift
  4. In ViewDidLoad method call loadUrl method:

Run the app. You will see google website is loaded.

If you use any non-secure url, Xcode will log an error in error console.

App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app’s Info.plist file.

The urls that start with http instead of https is called non-secured url. Due to security issue, iOS doesn’t load non https urls.
In such case we’ve to add some values in our Info.plist.  

Fix the issue of “App Transport Security has blocked a cleartext HTTP”

screen-shot-2016-09-15-at-2-08-54-pm

a. Open Info.plist file from left panel (File explorer).

b-webview

b. Click on plus button (+) of any top level row. I’ll click the plus button beside Bundle Identifier.

screen-shot-2016-09-15-at-2-12-21-pm

c. A new row will be created. Type “App Transport Security Settings”  (without double quotes) in the row (key column) box. Hit Enter. It’s type should be a dictionary.

d-webview

d.  Open the App Transport Security Settings row by clicking on Arrow head at the beginning of the row.

e-webview

e. Click Plus button next to the row of “App Transport Security Settings”

screen-shot-2016-09-15-at-2-13-51-pm

f. In new row type “Allow Arbitrary Loads” (without double quotes)

g. Make it’s value to Yes.

Run the app again with any non-https link e.g. http://webindream.com.

Full code is given below:

SWIFT cheat sheet

I’ve added some swift codes which can be helpful for beginners. You can bookmark this page, as it can be used for quick recall.

Declare variables in swift:

Concatenate strings  in swift

Declare arrays in swift

Find number of elements in array in swift

Tuples in swift

Declare Class in swift

Instantiate class in swift

Declare Struct (or structure) in swift

Inherit Class in swift

Declare  simple method / function without argument and return type:

Declare method / function with argument and return type

For loop

For loop in another form

For loop in array

While loop:

 

 

 

 

How to add UIImageView programmatically in swift

You can add UIImageView programmatically in your iOS application  at run time. You can get the image file from server. To avoid complexity, we will use local image file. First create a new project. Copy and paste any image from your local computer in the project. You can download image from here.

UPDATE: After downloading the image, copy it to your project folder. Best way to do this is open the Project navigator of Xcode (If it is not already opened). Then open the folder where your image is located. Drag and drop the image from Finder to you Project Navigator. When a dialog box appear,  Check “Copy items if needed” to project option.

Before I proceed, let me explain the difference between UIImage and UIImageView.

UIImage: It’s the image that we want to display.

UIImageView: It’s something like frame of the image or placeholder of the image where we’ll set our UIImage or image.

Now open your ViewController.swift file.

There are 2 things to add image to your application programmatically.

1. Add image to your “image view”.

2. Add “image view” in your view.

In viewDidLoad method write the following code to add image to your image view:

Now, let’s add the image view in our main view:

We can also set width and height of the image:

The whole code is:

 

How to add UITextField, UITextView and UILabel programmatically in swift 4.0

In iOS app development, sometime we need to add Textfields, textviews, labels etc programmatically. It gives you control over customizing styles, size and position of them. I’m going to place codes (swift Language) here so that you can get all of them from one place.
Following codes will work in any view controller
UITextField:
TextView:
Label:

 

How to add UIButton programmatically in SWIFT 4.0

In iOS app development sometime we’ve to create Buttons programmatically or dynamically. Today, I’ll show you how to do this using SWIFT programming language.

Let’s create a new Single View iOS application in Xcode. Name the project “DynamicButton”. Select swift as programming language.

Now go to ViewController.swift. In ViewDidLoad method we’ll write some codes that will add one button to the screen automatically at run time.

Let’s create a new method createButton and write some codes inside the method that will do the magic:

Explanation:

First we initialize a button object and keep it in button variable.

Then we set title and color of title of it.

In the following line of code, we add position and size of the button.

Add the button to view.

Finally let’s call the createButton in viewDidLoad method.

Now if you run the project (cmd + R) you can see a button created. If you tap on the button, nothing will happen at this moment. To call a method when button is pressed, we can write:

Do not forget to add ‘:’ after action method name (i.e. buttonPressed:). In action parameter of .addTarget, you set the method name that should be called. Now write buttonPressed method.

The buttonPressed: method simply displays an alert view. Now run the project and view result.

iOS Simulator Screen Shot Feb 18, 2015, 3.20.49 PM

The whole ViewController.swift will look like this:

 

 

How to use Core-Data with SWIFT

Core data is a framework that is used to save data in iOS app development and OS X platform. Today we’ll develop an application using SWIFT programming language that will have a textfield, a button and a textview that will save and display data fetched from Core Data. To learn more about Core-Data please visit:

Introduction to Core Data Programming Guide

Summary:

Step 1: Create Project

Step 2: Design Core-Data database

Step 3: Write script to save and fetch data from core data.

 

Step 1:

1. Create a new project in Xcode. In first window of the wizard select Single view application. In next screen, select SWIFT from dropdown box and also check “Use Core Data” checkbox (bottom of the wizard). Please use “NotePad” as your project name.

Screen Shot 2015-02-12 at 11.56.09 PM

2. Open Main.storyboard and add a textfield, a button. Below the button add big textview. ( Note: textfield is for one line. For multiple lines use textview).

Screen Shot 2015-02-13 at 12.06.29 AM

 

Step 2:

1. Now, open NotePad.xcdatamodeld (YourProjectName.xcdatamodeld). This is the place where you design your database.

2. Here you add Entity (Entity is similar to Table of Oracle / MySql database, but not exactly). At the bottom of the page, you will see Add Entity button (1). Click on it. New entity (2) will be added. By double clicking on it, you can change it’s name. I changed it to “Note”

3. Now select the entity (if it’s not already selected). Add “Attribute” to it by clicking + button (3) below the Attributes section. Attribute is similar to column of a table. For each attribute we should select a type from dropdown box. I’m using only one attribute “paper” with type “String”.

4. At this point you have to do an important thing. In Utilities panel (Right side bar), you will see a box labeled: “Class” (4) in entity section. Write here : NotePad.Note; Actually, it should be ApplicationName.EntityName

5. Now we’ll generate Entity Classes. To do this, go to Editor > Create NSManagedObjectSubclass. Select the data model (It’s the file name that we have worked on). In next screen, select Entity name. We’ve only one Entity. Click next. Now, you will see a dialog box for saving entity file. Here, from language dropdown box select swift and finally click Create button.

coredata

Step 3:

1. Add outlets to textField and textview.

2. Add IBAction to button. You can also rename the button to “Add”

3. Open ViewController.swift.

We’ll edit this file. Before we proceed, let me give you an example. Suppose we have some food, one tray and a refrigerator. To save the food, we’ve to put it on the tray and keep the tray inside refrigerator. Saving method of Core data is similar. Here data is food, managedObject is tray and managedObject.save is equivalent to keeping tray contained food inside refrigerator.

Screen Shot 2015-02-16 at 9.45.25 PM

 

First import CoreData in your viewController

declare an array NSManagedObject below IBOutlet declaration. so the code will look like this:

 

To fetch data from CoreData we can use following method:

Above method fetches all data in Note entity. At the end of the method, we used for loop to get each text inside paper and add them in a local variable. finally show all texts in large text view.

To save data in Core data use following code. We are saving text in paper attribute (column) of Note entity (table)

 

Now implement saveNote in IBAction actionAddNote. Clear the text field so that you can add new note.

 

Full source code of ViewController.swift. You can also download the whole project from the link provided at the end this tutorial.

 

You can download the whole project by clicking here.

Parsing JSON object by SWIFT

Today we’ll see how to work with JSON in swift language. We’ll develop a simple currency converter. It will convert USD to Euro by using web API that returns JSON data. Here is the basic structure that we are going to do:
Screen Shot 2014-12-21 at 9.01.36 PM
Let’s begin.
1. Create a new project “CurrencyConverter” and select swift as programming language. Select Single View from next dialog box.

2. Open Main.storyboard and add a textfield, a button and a label. See screenshot for guide. We’ll keep everything simple.

3. Open both Main.storyboard and ViewController.swfit in Assistant editor.

a. Create an IBOutlet for textField and name it txtAmount

b. create an IBOutlet of the label (result) and name it labelResult.

c. Create an IBAction for the button and give it name: actionConvert.


4. Open ViewController.swift in standard editor.

We’ll declare 3 functions (or methods) that will do the following things:

a. getData()
It will get data from server.

b. parseJSON()

This function will convert data received from server into JSON object.

c. displayData()
This function will display the JSON data in UILabel. Call this method inside parseJSON method.

Finally in actionConvert method (or function), call getData and parseJSON.

Run the application to see the result.

 

IMPORTANT NOTE: If you want to fetch JSON Array instead of JSON Object (One JSON array contains one or more JSON objects), please use the following method: 

How to implement SOAP Web service with SWIFT 4.0 programming language?

Update (13 November, 2017): Updated codes for Xcode 9 and swift 4.0

Update (25 March, 2016): I’ve updated codes for Xcode 7 and swift 2.0

Update (16 September, 2016): Code updated for Xcode 7.2.1 and swift 2.1.1

Today I’ll show you how to develop SWIFT based application that communicates with a web service using SOAP.

We’ll use following  web service and convert temperature from celcious to fahrenheit:

http://www.webservicex.net/ConvertTemperature.asmx

If you are new to SOAP, then I’d recommend you to learn it from the following link:

http://www.w3schools.com/webservices/ws_soap_intro.asp

And to learn the basics of swift, you can read apple’s documentation by clicking here.

Requirements: Basic understanding of Web services, SOAP and swift.

First open Xcode 9 (or later version) and create a new project named “Temperature Converter”. Select swift as language from first dialog box. Created project will contain ViewController.swift, Main.storyboard and other files.

Screen Shot 2014-10-24 at 11.23.03 PM
Open Main.storyboard and add textfield, labels and a buttons as shown in the screenshot below.
Screen Shot 2014-10-24 at 11.30.28 PM
Add outlets of textfields and add an action for the button. If the image below is too small to view, please click on it to see the full size. In case if you don’t know how to do this, open storyboard and swift file side by side in Assistant editor view. Ctrl + Drag and drop textfields to the swift file. Do the same thing for action, just change the connection type from “Outlet” to “Action” in popup box. I gave the outlet names txtCelcius and txtFahrenheit. For button’s action name I used actionConvert. You can use any name. I didn’t add any outlet for button.
Screen Shot 2014-10-24 at 11.31.55 PM
Now let’s change the codes step by step to add SOAP service with this application.

Step 1: Add delegation names that we’ll be delegating through out this project. We’ll delegate:UITextFieldDelegate, NSURLConnectionDelegate, NSXMLParserDelegate.

 

Step 2: We need some variables to store received data from server and keep track of those data. Let’s declare them.

 

Step 3: Modify the actionConvert method to let it get user input from Celcius textfield and make a request to server using post method. The full actionConvert method will look like following code:

 


 

Step 4: Using following 3 methods we’ll delegate with NSURLConnection. First 2 methods will save data received from server in mutableData variable. The last method will start NSXMLparser to parse SOAP message.

 

Step 5: We need 2 methods to parse SOAP message returned from server. I’ll discuss one by one so that you can understand them.

The first method is called each time a new node or element of SOAP (or XML) is parsed. We need to  save this name so that we can detect each node in second method. Let’s see the first method:

 

 

The second method will check the current element name and if it finds “ConvertTempResult” element, then it displays the value in Fahrenheit text field.

Now, save and run the code. If you put any numeric value in Celsius box and tap Convert button, Fahrenheit box will display the result fetched from server.

 

iOS Simulator Screen Shot Oct 27, 2014, 7.33.25 PM

 

You can download the whole project from here.

Or can pull the latest project code from Github:

https://github.com/rubelbd82/soapwithswift

Best of luck!!!