{"id":28125156,"url":"https://github.com/xing/unifiedactionhandling","last_synced_at":"2025-07-28T23:34:33.078Z","repository":{"id":66808359,"uuid":"119817187","full_name":"xing/UnifiedActionHandling","owner":"xing","description":"A sample project for the CocoaHeads HH presentation in January 2018. It shows our approach to handle actions like cell and button taps in a unified way.","archived":false,"fork":false,"pushed_at":"2018-03-01T13:33:02.000Z","size":16,"stargazers_count":8,"open_issues_count":0,"forks_count":1,"subscribers_count":16,"default_branch":"master","last_synced_at":"2025-05-14T09:21:18.960Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xing.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2018-02-01T09:59:14.000Z","updated_at":"2018-03-02T15:02:08.000Z","dependencies_parsed_at":null,"dependency_job_id":"a3863810-3dea-4fa8-8c53-848e7b3d72ad","html_url":"https://github.com/xing/UnifiedActionHandling","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/xing/UnifiedActionHandling","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xing%2FUnifiedActionHandling","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xing%2FUnifiedActionHandling/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xing%2FUnifiedActionHandling/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xing%2FUnifiedActionHandling/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xing","download_url":"https://codeload.github.com/xing/UnifiedActionHandling/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xing%2FUnifiedActionHandling/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267604329,"owners_count":24114522,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-28T02:00:09.689Z","response_time":68,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-05-14T09:20:31.431Z","updated_at":"2025-07-28T23:34:33.027Z","avatar_url":"https://github.com/xing.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Unified Action Handling\n\nThis is a sample project which contains the unified action handling we use in XING's iOS app. We presented this on the CocoaHeads Hamburg meeting in January 2018.\n\nThe idea is to unify handling the tapping of cells, the tapping of buttons, and 3D touches. \n\n- Cells get a `selectionAction`, and a `previewAction`.\n- Buttons can get a `action` (not shown in the sample yet).\n- An action is of type `\u003cNSDictionary\u003cNSString *, id\u003e` in Objective-C, and `Action` in Swift.\n- An action can be dispatched via several dispatch methods.\n- Action handlers (blocks/closures) can be registered up the responder chain.\n\nWe have seen less need for delegation with this approach, which shaves of a couple of lines of code. Also, we can work with composition instead of inheritance, as registering an action handler does not require yet another subclass.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxing%2Funifiedactionhandling","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxing%2Funifiedactionhandling","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxing%2Funifiedactionhandling/lists"}