iOS Changes

From Xojo Documentation

Xojo 2018 Release 3

Now using iOS 12 SDK for best compatibility with latest iPhone devices.

Xojo 2018 Release 2

iOSTable supports pull-to-refresh

You now have the ability to use the iOS TableView’s built-in pull-to-refresh capability. An example of this can be seen in the Mail application when you are looking at the Mailbox list. Just drag downward until you see a progress wheel. That’s pull-to-refresh.

In Xojo it’s as simple as setting the new iOSTable.AllowRefresh property to True, implementing the iOSTable.Refreshed event and then call iOSTable.EndRefresh when you’ve received and updated the table to make the progress wheel disappear.

For an example of how to do this, see the Examples/iOS/Controls/Table/TableDataSourceDatabase/TableDataSourceDatabase project.

iOSTable better supports varying row heights with iOSCustomTableCell

When laying out lists of data in iOS, often there’s more than one way to get to where you need to be. The Bedtime, Stopwatch or Timer modes in the iOS Clock app are a great example of this. Instead of using a scrollable view, they use an TableView with variable height rows and starting in 2018r2 this is now really simple to do too.

To make variable height rows, you’ll need to use a datasource with your iOSTable and create a subclass of iOSCustomTableCell just like you did previously and set the iOSCustomTableCell.UseDynamicHeight property to True.

For an example of how to do this, see the Examples/iOS/Controls/Table/CustomCellDynamicHeight project.

iOSView support large titles

Turn iOSView.LargeTitleMode to display large titles on iOS 11 or later.

iOSHTMLViewer now uses WKWebView for better compatibility

The iOSHTMLViewer control now uses WKWebView for better system compatibility and improved Declare support.

Xojo 2016 Release 2

Xojo 2016 Release 2 brought many new changes to iOS projects, some of which may require you to update your existing projects.

Launch Screens

Instead of separate Launch Images for each device size, your app now has a default blank Launch Screen. You can add graphics and change the color of the Launch Screen to create a "splash" screen for your apps. Apple no longer accepts apps using Launch Images for submissions to the App Store so switch to a Launch Screen instead.

iOSTable and Related Classes and Interfaces

iOSTable now supports these new capabilities:

  • row actions
  • row editing
  • row re-ordering
  • custom cells

Learn more about these features in the UserGuide:Working with Tables topic.

These new features required changes to the iOSTable API that could break existing projects.


iOSTableCellData no longer has a Constructor. Instead you need to use the iOSTable factory method: CreateCell. Code like this:

Var cell As New iOSTableCellData
Var cell As iOSTableCellData = New iOSTableCellData

Needs to be changed to this:

Var cell As iOSTableCellData
cell = MyTable.CreateCell


The iOSTableDataSource interface has a new parameter added (as the first parameter) to all its methods: table As iOSTable. You will need to update the method signature for the RowCount, RowData, SectionCount and SectionTitle methods.

New Controls and Classes


The iOSMotion class provides motion updates from the device. These motion updates from iOS are combined from both the accelerometer and gyroscope.


The iOSLocation control is used to request location coordinates and updates from the device.

Picture Picker

The iOSPicturePicker provides a way for the user to take a picture or choose an existing picture from the camera roll or photo library.

Scrollable Area

You can now use the iOSScrollableArea control to allows users to view content that does not fit on the screen of the device. To use this, create a Container Control with the content that does not fit on the view, then add a Scrollable Area control to the View and sets its Content property to the Container Control.

Sharing Panel

The iOSSharingPanel allows the application to share text, a URL, or a picture with any registered system service or app.


In prior versions, you and to create your toolbars exclusively in code. This still works, so you don't need to update your projects if you use toolbars. But you now have the option of creating toolbars visually in the View Layout Editor. Simply drag a ToolButton from the Library to the top of a view (left or right) to add to the Navigation Bar or drag it to the bottom of the view to add it to the toolbar.

You continue to handle toolbar events in the iOSView.ToolbarPressed event handler. Learn more about toolbars in the iOS Toolbars topic of the User Guide.


The iOS SQLite classes have all been renamed to have an "iOS" prefix. You'll need to change your usage of SQLiteDatabase, SQLiteDatabaseField, SQLiteException and SQLiteRecordSet to use iOSSQLiteDatabase, iOSSQLiteDatabaseField, iOSSQLiteException and iOSSQLiteRecordSet.

iOS 7 Support

Xojo 2016 Release 2 and later no longer support iOS 7. Your apps now require iOS 8 or later.