iOSBlock

From Xojo Documentation

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 Text) 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