2

iOS 13, with sheets presenting for presentModally, creates a change that seems inconsistent, even with Apple's earlier example apps. I've watched WWDC's Modernizing UI for iOS 13: https://developer.apple.com/videos/play/wwdc2019/224/ read informative blog posts such as: https://medium.com/@hacknicity/view-controller-presentation-changes-in-ios-13-ac8c901ebc4e but haven't seen a comprehensive discussion of appropriate app behavior (aside, I'm using UIKit, not SwiftUI).

Example: The old Apple FoodTracker learning example (which is still online, but hasn't been upgraded past Swift 3), selecting data from a Table View Cell tap would navigate to a detail View Controller via a "show" segue, and implemented "Cancel" / "Save" bar button items for direct changes instead of "< Back" and "Edit" options that would transition editing w/an extra step. Adding data using the "+" button above the Table View segues via a Navigation Controller to the View Controller using present modally. Same "Cancel" "Save" choice. Below shows the implementation in iOS 13: enter image description here

Looking at Apple's iPhone UI in iOS 13, it seems in most (all?) apps, the user never moves from selecting data in a Table View to immediately editing on another View Controller. Rather, the user needs to take an additional step and select an "Edit" button. Below are examples, first from Reminders: enter image description here

It's notable that to see an item's detail you've got to first select the item, then it transitions to the middle screen offering a new "i" information circle, which is clicked to view the selected item's detail. It's also noteworthy that the user isn't offered the option of a "Cancel" bar button, although the pull-to-dismiss in iOS 13 does present the user with a "Discard/Cancel" sheet alert.

Apple's Contacts app (below) has always separated viewing a contact from editing an existing one. When clicking "Edit" for an existing contact, the View Controller transitions via a fade and a new view controller shows, rather than an up-from-bottom present-modally-style in the new default "sheets" view, which occurs when creating a new contact. While Apple says it's OK to use fullscreen for "a complex task that benefits from a full-screen presentation", is that the rational from not using the new, default "sheets" view here? It does seem the transition from viewing a contact to editing one shows a new view controller w/altered presentation. Apple Guidelines advise modal presentations (which should now default to "sheets" style in iOS13) where the context is to "focus people’s attention on making a choice or performing a task": https://developer.apple.com/design/human-interface-guidelines/ios/app-architecture/modality/

enter image description here

In a simple App like Food Tracker or the sample To Do app that my students are working on (below), what's the recommended UI behavior? Should selecting a To Do item from the Table View transition using a "show" segue with the detail View Controller showing bar button items for "Cancel" and "Save" (second screen from left, below) or should it keep "< Back" and add an "Edit" (third screen from left). And if so, should the UI programmatically swap out "< Back" and "Edit" with "Cancel" and "Save"? Is there any other appropriate UI animations one should employ when doing so (Apple's contacts app seems to transition from viewing an existing contact to a slightly different editing View Controller when an "Edit" button is pressed on an existing contact - it's animation offer a fade to mark the transition). FWIW, I've noticed Apple's older "App Development" example of a To Do list uses a single view controller with "Cancel" and "Save" button options, rather than the two-step show data, then edit, that it uses in the apps I reference, above.

enter image description here

Thanks for helping me understand best practice so I can share this with my students!

Gallaugher
  • 1,593
  • 16
  • 27
  • I don't think there is a generic guideline. Typically you would try and provide a UX that lets the user get things done in an intuitive way as simply and quickly as possible. Consider the reminders example; if all you want is a list of reminders (e.g. a shopping list) you can quickly type them in the second screen. If you want a more complex reminder then you can being up the detail screen. Compare that with your app. For each list entry I have to tap "+" and select a date; what if I don't want a date for this item? Then after tapping save I have to tap "+" to add the next. – Paulw11 Feb 01 '20 at 20:06
  • I'm not saying your app is wrong - maybe your app requires people to specify a date to fight procrastination - if so, then what you have might be exactly what is needed. I will say that people are going to get used to the swipe-down to dismiss, but there is nothing to stop you having a cancel button too. Especially as this might be needed to provide backward compatibility for iOS 12. I would resist the temptation to simply disable the new look by specifying full screen modals – Paulw11 Feb 01 '20 at 20:08

0 Answers0