A SDLSlider
creates a full screen or pop-up overlay (depending on platform) that a user can control. There are two main SDLSlider
layouts, one with a static footer and one with a dynamic footer.
The slider will persist on the screen until the timeout has elapsed or the user dismisses the slider by selecting a position or canceling.
A slider popup with a static footer displays a single, optional, footer message below the slider UI. A dynamic footer can show a different message for each slider position.
// Create the slider SDLSlider *sdlSlider = [[SDLSlider alloc] init];
// Create the slider let sdlSlider = SDLSlider()
The number of selectable items on a horizontal axis.
// Must be a number between 2 and 26 sdlSlider.numTicks = @(5);
// Must be a number between 2 and 26 sdlSlider.numTicks = NSNumber(5)
The initial position of slider control (cannot exceed numTicks).
// Must be a number between 1 and 26 sdlSlider.position = @(1);
// Must be a number between 1 and 26 sdlSlider.position = NSNumber(1)
The header to display.
// Max length 500 chars sdlSlider.sliderHeader = @"This is a Header";
// Max length 500 chars sdlSlider.sliderHeader = "This is a Header"
The footer will have the same message across all positions of the slider.
// Max length 500 chars sdlSlider.sliderFooter = @[@"Static Footer"];
// Max length 500 chars sdlSlider.sliderFooter = ["Static Footer"]
This type of footer will have a different message displayed for each position of the slider. The footer is an optional parameter. The footer message displayed will be based off of the slider's current position. The footer array should be the same length as numTicks
because each footer must correspond to a tick value. Or, you can pass nil
to have no footer at all.
// Array length 1 - 26, Max length 500 chars NSArray<NSString *> *footers = @[@"Footer 1", @"Footer 2", @"Footer 3"]; sdlSlider.sliderFooter = footers;
// Array length 1 - 26, Max length 500 chars let footers = ["Footer 1", "Footer 2", "Footer 3"] sdlSlider.sliderFooter = footers
An ID for this specific slider to allow cancellation through the CancelInteraction
RPC. The ScreenManager
takes cancel ids 0 - 10000, so ensure any cancel id that you set is outside of that range.
sdlSlider.cancelID = @(10045);
sdlSlider.cancelID = NSNumber(10045)
[self.sdlManager sendRequest:sdlSlider withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) { if (!response || !response.success.boolValue) { SDLLogE(@"Error getting the SDLSlider response"); return; } // Create a SDLSlider response object from the handler response SDLSliderResponse *sdlSliderResponse = (SDLSliderResponse *)response; NSUInteger position = sdlSliderResponse.sliderPosition.unsignedIntegerValue; <#Use the slider position#> }];
manager.send(request: sdlSlider, responseHandler: { (req, res, err) in // Create a SDLSlider response object from the handler response guard let response = res as? SDLSliderResponse, response.success.boolValue == true, let position = response.sliderPosition?.intValue else { return } <#Use the slider position#> })
You can dismiss a displayed slider before the timeout has elapsed by dismissing either a specific slider or the current slider.
If connected to older head units that do not support this feature, the cancel request will be ignored, and the slider will persist on the screen until the timeout has elapsed or the user dismisses by selecting a position or canceling.
// `cancelID` is the ID that you assigned when creating the slider SDLCancelInteraction *cancelInteraction = [[SDLCancelInteraction alloc] initWithSliderCancelID:cancelID]; [self.sdlManager sendRequest:cancelInteraction withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) { if (!response.success.boolValue) { // Print out the error if there is one and return early return; } <#The slider was canceled successfully#> }];
// `cancelID` is the ID that you assigned when creating the slider let cancelInteraction = SDLCancelInteraction(sliderCancelID: cancelID) sdlManager.send(request: cancelInteraction) { (request, response, error) in guard response?.success.boolValue == true else { return } <#The slider was canceled successfully#> }
SDLCancelInteraction *cancelInteraction = [SDLCancelInteraction slider]; [self.sdlManager sendRequest:cancelInteraction withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) { if (!response.success.boolValue) { // Print out the error if there is one and return early return; } <#The slider was canceled successfully#> }];
let cancelInteraction = SDLCancelInteraction.slider() sdlManager.send(request: cancelInteraction) { (request, response, error) in guard response?.success.boolValue == true else { return } <#The slider was canceled successfully#> }