Skip to content
Titanium SDK
Version13.0.0

You are reading 13.0.0. See this page in 13.4.1.

Titanium.UI.OptionDialog

viewAndroidiPhoneiPadmacOSsince 0.8

Extends Titanium.UI.ViewTitanium.Proxy

An option dialog is a modal view that includes a message and one or more option items positioned in the middle of the display on Android and at the bottom edge on iOS. On Android, buttons may be added below the options.

Android iPhone iPad
Android iPhone iPad

An option dialog is created using Titanium.UI.createOptionDialog or Alloy <OptionDialog> element. See Examples below for usage.

This dialog is presented differently on each platform, as described below.

Android

On Android, the dialog is shown in the middle of the display (not touching the edges), with the option items represented in a picker. The previously-selected, or default, item can be set on creation.

You can assign a View to the Titanium.UI.OptionDialog.androidView property to define a custom dialog UI and layout, or you can assign a set of options to the Titanium.UI.OptionDialog.options property, but not both. If both of these properties are set, the custom view will appear but the options will be hidden.

Buttons below the picker may be optionally defined using the buttonNames property. The click event returns a Boolean value to indicate whether either an option item or a button was clicked.

iOS

The destructive property may be set for an item, to give a visual cue that selecting it results in an irreversible action. Option dialogs are automatically cancelled when the application is paused/suspended.

iPhone

On iPhone, this dialog is shown at the bottom edge of the display, with the option items represented as vertical buttons.

iPad

On iPad, this dialog is shown in the middle of the display, or as a popover-like dialog if another view or control is specified via an argument passed to the open() method.

Note that on iPad, the cancel button is not displayed -- users can cancel the dialog by clicking outside of the dialog.

Caveats

Care should be taken not to define any properties that are not documented, as this may produce unexpected results. For example, setting a message property will prevent the picker of option items from being displayed on Android.

Examples

Dialog with 3 Options

Ti.UI.backgroundColor = 'white';
var win = Ti.UI.createWindow({
  title: 'Click window to test',
  backgroundColor: 'white'
});

var opts = {
  cancel: 2,
  options: ['Confirm', 'Help', 'Cancel'],
  selectedIndex: 2,
  destructive: 0,
  title: 'Delete File?'
};

win.addEventListener('click', function(e){
  var dialog = Ti.UI.createOptionDialog(opts).show();
});
win.open();

Dialog with 2 Options and 1 Button on Android and 3 Options on iOS

var win = Ti.UI.createWindow({
  title: 'Click window to test OptionDialog',
  backgroundColor: 'white'
});

var opts = {
  title: 'Delete File?'
};

var isAndroid = Ti.Platform.osname === 'android';

if (isAndroid) {
  opts.options = ['Confirm', 'Cancel'];
  opts.buttonNames = ['Help'];
} else {
  opts.options = ['Confirm', 'Help', 'Cancel'];
}

var dialog;
win.addEventListener('click', function() {
  dialog = Ti.UI.createOptionDialog(opts);

  dialog.addEventListener('click', onSelectDialog);
  dialog.addEventListener('cancel', function(e) {
    alert('Dialog canceled! e.cancel = ' + e.cancel + ', e.index = ' + e.index);
  })

   dialog.show();
});

function onSelectDialog(e) {
  if (isAndroid) {
    if (e.button === false && e.index === 0) {
      alert('Confirm option selected! e.index = ' + e.index);
    }
    if (e.button === false && eventeindex === 1) {
      alert('Cancel option selected! e.index = ' + e.index);
    }
    if (e.button === true && e.index === 0) {
      alert('Help Button clicked! e.index = ' + e.index);
    }
  }
}

win.open();

Alloy XML Markup

Previous example as an Alloy view. You can set cancel and destructive on a <Option/> tag.

optiondialog.xml:

<Alloy>
    <Window id="win" onClick="showOptions" title="Click window to test"
        fullscreen="false" onExit="true" backgroundColor="white">

        <!--
            The OptionDialog tag declares an option dialog,
            which will need to be opened by the controller.
        -->
        <OptionDialog id="dialog" title="Delete File?">

            <!-- The Options tag sets the options property. -->
            <Options>
                <Option destructive="true">Confirm</Option>
                <Option platform="ios">Help</Option>
                <Option cancel="true">Cancel</Option>
            </Options>

            <!-- The ButtonNames tag sets the Android-only buttonNames property. -->
            <ButtonNames>
                <ButtonName>Help</ButtonName>
            </ButtonNames>

            <!-- Add a View for the androidView property here. -->

        </OptionDialog>

        <!-- Add views here -->

    </Window>
</Alloy>

optiondialog.js:

function showOptions(){
    $.dialog.show();
}

Properties 34

View to load inside the message area, to create a custom layout.

On Android you can either define a custom view with this property, or you can assign a set of options to the Titanium.UI.OptionDialog.options property, but not both. If you do, the custom view will appear but not the options you defined.

In an Alloy application you can specify this property with either an <AndroidView/> or <View/> element inside the <OptionDialog/> element, for example:

<Alloy>
    <OptionDialog id="dialog" title="Delete File?" onClick="clickCB">

        <!-- Add View or AndroidView for the androidView property -->
        <AndroidView platform="android" layout="vertical">
            <Label color="red" text="Warning!  This change is permanent and you cannot undo it!" />
        </AndroidView>

        <ButtonNames>
            <ButtonName>Confirm</ButtonName>
            <ButtonName>Cancel</ButtonName>
        </ButtonNames>
    </OptionDialog>
</Alloy>

apiName

Stringsince Android 3.2.0, iPhone 3.2.0, iPad 3.2.0, macOS 9.2.0read-only

Inherited from Titanium.Proxy

The name of the API that this proxy corresponds to.

bubbleParent

Booleansince Android 3.0.0, iPhone 3.0.0, iPad 3.0.0, macOS 9.2.0

Inherited from Titanium.Proxy

Indicates if the proxy will bubble an event to its parent.

Default: true

buttonNames

Array<String>Android

List of button names.

This property creates buttons underneath the picker options. The dialog only supports up to three buttons.

cancel

Number

Index to define the cancel option.

On iOS, set to -1 to disable the cancel option.

On iPad, the cancel option must be set to either -1 or the index of the last option. For example, if there are 3 options and one of them is a cancel button, the cancel button must be the last option (index 2). If cancel is set to a different value, the last entry in the options array is not displayed.

Note that the cancel button is never shown on iPad, since the user can cancel the dialog by clicking outside of the dialog.

Default: undefined (Android), -1 (iOS)

destructive

NumberiPhoneiPadmacOS

Index to define the destructive option, indicated by a visual cue when rendered.

Default: -1

elevation

NumberAndroidsince 5.0.0Android 5+

Inherited from Titanium.UI.View

Base elevation of the view relative to its parent in pixels.

opaquebackground

BooleaniPhoneiPadmacOSsince 3.2.0

Boolean value indicating if the option dialog should have an opaque background.

This property is useful to ensure that the option dialog will display contents properly on the iPAD idiom without ghosting when scrolling. This property is only respected on the iPAD idiom on iOS7 and above.

Default: false

options

Array<String>

List of option names to display in the dialog.

On Android you can assign a set of options to the OptionDialog with this property, or assign a custom view to the Titanium.UI.OptionDialog.androidView property, but not both. If you do, the custom view will appear but not the options you defined.

persistent

Booleansince 3.0.0

Boolean value indicating if the option dialog should only be cancelled by user gesture or by hide method.

This property is useful to ensure that the option dialog will not be ignored by the user when the application is paused/suspended.

Default: true

rotation

NumberAndroidiPhoneiPadsince Android 5.4.0, iPhone 12.3.0, iPad 12.3.0

Inherited from Titanium.UI.View

Clockwise 2D rotation of the view in degrees.

selectedIndex

NumberAndroid

Defines the default selected option. Since 8.1.0, if not defined or -1 it will show a normal list instead of radio buttons.

title

String

Title of the dialog.

titleid

String

Key identifying a string in the locale file to use for the title text.

tooltip

Stringsince 12.1.0iOS 15.0+

Inherited from Titanium.UI.View

The default text to display in the control's tooltip.

touchFeedback

BooleanAndroidsince 6.1.0

Inherited from Titanium.UI.View

A material design visual construct that provides an instantaneous visual confirmation of touch point.

Default: false

translationX

NumberAndroidsince 5.0.0

Inherited from Titanium.UI.View

Horizontal location of the view relative to its left position in pixels.

Methods 10

Inherited from Titanium.Proxy

Adds the specified callback as an event listener for the named event.

Parameters
ParametersTypeDescription
nameString

Name of the event.

callbackCallback<Titanium.Event>

Callback function to invoke when the event is fired.

4 fields
bubbles Boolean

True if the event will try to bubble up if possible.

cancelBubble Boolean

Set to true to stop the event from bubbling.

source Object

Source object that fired the event.

type String

Name of the event fired.

Inherited from Titanium.Proxy

Fires a synthesized event to any registered listeners.

Parameters
ParametersTypeDescription
nameString

Name of the event.

event?Dictionary

A dictionary of keys and values to add to the Titanium.Event object sent to the listeners.

getViewById

since 6.1.0

Inherited from Titanium.UI.View

Returns the matching view of a given view ID.

Parameters
ParametersTypeDescription
idString

The ID of the view that should be returned. Use the id property in your views to enable it for indexing in this method.

Hides this dialog.

This triggers a click event as if cancel was invoked.

Parameters
ParametersTypeDescription
params?hideParams

Argument containing parameters for this method. Only used on iOS.

1 field
animated Boolean

Determines whether to animate the dialog as it is dismissed.

insertAt

since 3.3.0

Inherited from Titanium.UI.View

Inserts a view at the specified position in the children array.

Parameters
ParametersTypeDescription
paramsViewPositionOptions

Pass an object that specifies the view to insert and optionally at which position (defaults to end)

2 fields
position? Number

Position in the children array of the view element to replace.

view Titanium.UI.View

View to insert. Required.

Inherited from Titanium.Proxy

Removes the specified callback as an event listener for the named event.

Parameters
ParametersTypeDescription
nameString

Name of the event.

callbackCallback<Titanium.Event>

Callback function to remove. Must be the same function passed to addEventListener.

4 fields
bubbles Boolean

True if the event will try to bubble up if possible.

cancelBubble Boolean

Set to true to stop the event from bubbling.

source Object

Source object that fired the event.

type String

Name of the event fired.

Shows this dialog.

On iPad, this dialog is shown in the middle of the display or, when specified via the params argument, as a popover-like dialog attached to another view or control.

Parameters
ParametersTypeDescription
params?showParams

Argument containing parameters for this method. Only used on iPad.

Events 2

Fired when an option of this dialog is clicked or, under certain circumstances, when this dialog is dismissed.

On iOS as of Release 2.0, when the dialog is dismissed without using an option, for example, using the hide method (iPhone, iPad) or a tap outside of the dialog (iPad), this event is fired as though the cancel option was selected. In these circumstances, the index property will be the cancel option index if defined or -1 otherwise.

Event properties
Event propertiesTypeDescription
indexNumber

Index of the option that was pressed. See description for result of the dialog being dismissed in some other way.

buttonBoolean

Indicates whether the index returned by the index property relates to a button rather than an option item.

cancelBoolean | Number

Boolean type on Android; Number on iOS.

On Android, indicates whether the cancel button was clicked, in which case returns true.

On iOS, the value of the cancel property is returned, if defined, or -1 otherwise.

destructiveNumber

Index of the destructive option if defined or -1 otherwise.

rotate

since 12.7.0

Inherited from Titanium.UI.View

Fired when the device detects a two finger rotation.

Event properties
Event propertiesTypeDescription
rotateNumber

Rotation in degrees.