iOSBlock

From Xojo Documentation

You are currently browsing the old Xojo documentation site. Please visit the new Xojo documentation site!

Class (inherits from Object)

Used when callings declares that require Obj-C blocks. An iOSBlock is created from a Delegate and in turn creates an Objective-C block that will call into the delegate. This Objective-C block is retrieved from the Handle property and passed into declares.

Properties
Handle fa-lock-32.png
Constructors

Constructor(theDelegate As Object)


Sample Code

The openURL command can be called with a series of Declares, the last of which requires a Block. Here are the Declares:

Public Function ShowURL(url As String) as Boolean
// NSString* launchUrl = @"http://www.xojo.com/%22;
// [[UIApplication sharedApplication] openURL:[NSURL URLWithString: launchUrl]];

Declare Function NSClassFromString Lib "Foundation" (name As CFStringRef) As Ptr
Declare Function sharedApplication Lib "UIKit" Selector "sharedApplication" (obj As Ptr) As Ptr
Dim sharedApp As Ptr = sharedApplication(NSClassFromString("UIApplication"))

// https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSURL_Class/#//apple_ref/occ/clm/NSURL/URLWithString:
Declare Function URLWithString Lib "Foundation" Selector "URLWithString:" ( id As Ptr, URLString As CFStringRef ) As Ptr
Dim nsURL As Ptr = URLWithString(NSClassFromString("NSURL"), url)

// https://developer.apple.com/Library/ios/documentation/UIKit/Reference/UIApplication_Class/index.html#//apple_ref/occ/instm/UIApplication/openURL:
Declare Function openURL Lib "UIKit" Selector "openURL:options:completionHandler:" (id As Ptr, nsurl As Ptr, options As Ptr, handler As Ptr) As Boolean

Dim b As New iOSBlock(AddressOf URLResult)

Return openURL(sharedApp, nsURL, Nil, b.Handle)
End Function

URLResult is a global method with this Declaration:

Public Sub URLResult(success As Boolean)
// Your code here, although nothing is required
End Sub

See Also

Declare command, Ptr data type