12

Scenario

The user can choose multiple items from a list, which will be carried forward to the next action.

Problem

In iOS, there are no checkboxes available to make it clear to the user that this is a multi-select list.

Android provides checkboxes indicating which options are available for selection to the user.

Question

How do you visually convey multi-select options in iOS?

mockup

download bmml source – Wireframes created with Balsamiq Mockups

3
  • Great question - been desperately looking for an answer to this one. (Upvote) Feb 19, 2018 at 13:41
  • I created one recently. See if this could help.
    – kuang
    Apr 1, 2019 at 20:43
  • I created on recently. See if this could help.
    – kuang
    Apr 1, 2019 at 20:44

7 Answers 7

12

Apple likes switches

Sliding switches were a nifty looking control way back when. They were one way for iOS to announce

"Hey, look! I like gestures. You should swipe stuff."

In a short list where you might want to flip your wifi or Bluetooth off to save some battery, it works okay. When you have a list of selectable items, iOS asks you to think of those items in switchable I/O terms.

iOS switch controls

They went too far

I assume the lack of checkboxes in iOS' recommendations is not an oversight — they've had a while to live with that decision. That doesn't mean it's not a mistake. The idea that we'd use their pretty little switches for everything was unnecessarily limiting.

iOS does hint that checks are still cool with select lists. The un-selected indicator (no indicator) isn't checkbox like. And it's for single item selection any way so ... ¯\_(ツ)_/¯

iOS select lists have checks

Make your own

What's an empathetic UX designer to do? The interwebs have been asking this question for a while. The conclusion I subscribe to:
There's nothing wrong with checkboxes on touch devices.

Ask the developer to make a checkbox out of a button. It's an easy thing to do. And people already get this whole checkbox thing. Afterall, iOS users aren't studying up for the iOS HIG test or anything right? They do use other interfaces in the course of their day.

iOS with home-made checkboxes

Follow the users

In my experience, users know what to do when they see clearly indicated checkboxes. In fact, I've found that more users know what to do with checkboxes than toggle switches, at least for multi-select lists. Test your audience and see if you can confirm otherwise.

12
  • 1
    I like your answer more, I hate how Apple removed these basic controls just to be special. But we're trying to follow as many guidelines as we can with our app, so from this perspective the other answer seems more appropriate.
    – Big_Chair
    Dec 14, 2015 at 8:49
  • There are clear patterns to follow in iOS (as there are with Android). If you're so biased against the OS as to not follow its conventions properly, maybe designing for multiple platforms isn't for you.
    – Kip
    Dec 14, 2015 at 18:02
  • 3
    Apple's "recommendation" is clear. Judging by the frustration in the UX and dev communities, the "answer" is not so clear. Dec 14, 2015 at 18:21
  • 2
    There are so many wrong and biased things in this answer I likely don't have the space to go through them all. Switches have the same functionality as checkboxes: they are on or off. No, you do not have to swipe switches, you can simply tap them to toggle them on or off. Yes, checkboxes do exist in iOS but are used for grouped lists of options, which is the topic of this question. No, you should not jump to make your own custom control for this. It is bad to break conventions of the OS and it should be avoided. Designers should mostly follow the conventions of each platform they work on.
    – Kip
    Dec 15, 2015 at 19:10
  • 1
    Coming back and reading this exchange a couple years later, it encourages me to realize that platform distinctions have only further eroded. It's about the product experience, not the OS's decisions 😊 Sep 8, 2017 at 16:06
3

I think Apple is wrong in not including multiple selection. Switches just feel like they are for settings. I can't help but think of them as "on" and "off". I don't want to say I'm turning off tee work in my baseball practice. I want to say I'm not doing it today and deselect. Here I've drawn my own checkbox for comparison with the native recommendation of switches. checkboxes vs. switches

It's way past time Apple revamp the UI Elements. Revolt ;-)

3

As previously answered, the switches are appropriate for boolean settings where the options are on or off.

However, checkboxes have never been missing from iOS, and they are used for selecting multiple items:

Multiple selection on iPhoneOS Multiple selection on iOS

3

Multi selection can be easily solved with the standard checkmark accessory type: enter image description here

You can set it to as many cells as you want:

cell.accessoryType = selectedIndexes[indexPath.row] ? .checkmark : .none

selectedIndexes is a simple array of booleans in my case. I update them in

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)

You should decide for yourself how the selection data is stored.

Now, let's not mix the concepts when we talk about checkboxes. Traditional checkbox that came to web from PC is a control that allows to turn on/off a single value. It was designed for GUI which used mouse. Switch control in iOS has the same purpose, but designed for touch interface.

As Chriskowalskowski said:

you have to distinguish between a task where the user has to set a Boolean state (on/off) ... or, let the user select multiple cells which contain information

Both traditional check-box, and switch are designed to do the former - allow user to set on/off state.

Also, a similar looking checkmark started to be used in list views on PC to allow multiple selection. Although, checkbox control may be used inside the list view, the purpose of it is different - to indicate selected row rather than turn an option on/off.

There are two ways of doing multiple selection in UITableView.

First, as I demonstrated above - allows user to pick one ore more options from the list and proceed. This is a simple out-of-the-box solution.

Another one, as demonstrated by Lisa Tweedie and Jason Hibbs, when the selection indicator - white checkmark inside blue circle - is displayed on the left side. This one is primarily used for group operations with the items themselves, i.e. editing, moving, rather than to indicate selected choice. See Mail application for example.

1

Use a list of switch controls, like this:

iOS settings switch control exmaple

4
  • As an aside, these are essentially checkboxes. So they work well for this.
    – DA01
    Dec 11, 2015 at 19:58
  • 2
    It's what Apple wants us to use (to make their platform look cool) but it's less efficient (with space and clarity) than a checkbox. Which is why the more user-centric folks at Android kept them. Dec 12, 2015 at 3:53
  • 3
    But are you sure this is appropriate for selection? It's more of an on/off thing, but does a user really perceive it as a multiple selection?
    – Big_Chair
    Dec 14, 2015 at 8:59
  • @Big_Chair: Are you talking about picking one option from a series of options, like radio buttons? In iOS, that's done with groups of options just like above, but the entire row is tappable and a checkbox appears in the row that is selected.
    – Kip
    Dec 14, 2015 at 18:00
1

I am looking into exactly this question. I have a lovely android design and I want something similar for IOS

And I just found this from apple:

https://developer.apple.com/library/content/samplecode/TableMultiSelect/Introduction/Intro.html

circular checkboxes

Will IOS purists have a problem with this since it is from Apple??

0

If you want to present a list and let the user select multiple cells you have to distinguish between a task where the user has to set a Boolean state (on/off) for each cell - Such as notifications or privacy controls - Or, let the user select multiple cells which contain information - For example selecting diverse content (For example a VOD provider: Select Genres)

In the last case you should be using tableViewCells with an accessoryView - In this case the UITableViewAccessoryCheckmark. This is customizable and allows you to have different states for deselected and selected items.

Looking at your android sketch you probably want to use the second option.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.