{"id":19805599,"url":"https://github.com/remirobert/kinder","last_synced_at":"2025-05-01T06:31:16.243Z","repository":{"id":28217525,"uuid":"31721675","full_name":"remirobert/Kinder","owner":"remirobert","description":":couple: :fire: The basics of a Tinder-like swipeable cards interface controller","archived":false,"fork":false,"pushed_at":"2016-06-24T02:25:59.000Z","size":10759,"stargazers_count":172,"open_issues_count":1,"forks_count":12,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-04-19T17:26:55.337Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","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/remirobert.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-03-05T15:49:22.000Z","updated_at":"2024-11-07T05:28:26.000Z","dependencies_parsed_at":"2022-09-04T11:42:26.539Z","dependency_job_id":null,"html_url":"https://github.com/remirobert/Kinder","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/remirobert%2FKinder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/remirobert%2FKinder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/remirobert%2FKinder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/remirobert%2FKinder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/remirobert","download_url":"https://codeload.github.com/remirobert/Kinder/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251835580,"owners_count":21651675,"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","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":"2024-11-12T09:04:38.014Z","updated_at":"2025-05-01T06:31:15.777Z","avatar_url":"https://github.com/remirobert.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src =\"https://raw.githubusercontent.com/remirobert/Kinder/master/KinderExample/kinderBanner.png\"/\u003e\n\u003c/p\u003e\n\u003c/br\u003e\n\u003cbr\u003e\n\n\nWritten on Swift for iOS 7.0+.\n\u003cimg src =\"https://raw.githubusercontent.com/remirobert/Kinder/master/KinderExample/what.png\"/\u003e\n\nIt's a **UIViewController**, allows you to vote, to leave an opinion or know a point of view. The user must make a choice for each content, two possible, or view more information if necessary (dislike / like or deny / accept). Each content is represented by a **KinderCarView**.\nThe user has the choice between gesture or buttons.\nKinder is similar to the Tinder system. \n\n\u003cbr\u003e\nKinder is available on CocoaPods. Just add the following to your project Podfile:\n```\npod 'Kinder', '~\u003e 1.0.0'\n```\n\n\u003cbr\u003e\n\u003cp align=\"center\"\u003e\n  \u003cimg src =\"https://raw.githubusercontent.com/remirobert/Kinder/master/KinderExample/animKinder.gif\"/\u003e\n\u003c/p\u003e\n\u003cbr\u003e\n\u003cbr\u003e\n\n\u003cimg src =\"https://raw.githubusercontent.com/remirobert/Kinder/master/KinderExample/how.png\"/\u003e\n\nKinder to a stack of content, only three of them are displayed.\nKinder uses **delegations** to informs action or seek more content.\nYou can gradually add content (**Lazy loading**).\n\n\u003cbr\u003e\nKinder protocol:\n================\nYour parent control, must implement this protocol to make action. For example call a web service for like or dislike, and load more content.\n```swift\nprotocol KinderDelegate {\n    func acceptCard(card: KinderModelCard?)\n    func cancelCard(card: KinderModelCard?) // action signal\n    func signalReload()                     // signal to load more data\n    func reloadCard() -\u003e [KinderModelCard]? //return your datas to the Kinder controller\n}\n```\n\n\u003cbr\u003e\n\nKinder Model:\n=============\nKinder deals with model. If you have special model because you use an API or something else, you can juste inherited of the **KinderModelCard**. This model is important because all the content you will passe throw Kinder must be a **KinderModelCard**.\n```swift\nprotocol KinderModelCard {\n    var image: UIImage! { get set }\n    var content: String! { get set }\n    var desc: String! { get set }\n}\n```\n\n```Swift\nclass CustomModel: NSObject, KinderModelCard {\n    var image: UIImage!\n    var content: String!\n    var desc: String!\n    var id: String!\n    var isVoted: Bool!\n}\n```\n\n\u003cbr\u003e\nReferencing to the example project.\nIf you have any questions do not hesitate.\nAnd do not hesitate to contribute, to build something more impressive than that have already.\n\nCurrently used in the Adok application for iOS:\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src =\"https://raw.githubusercontent.com/remirobert/Kinder/master/KinderExample/iOS Simulator Screen Shot 08 Mar 2015 18.50.08_framed.gif\"/\u003e\n\u003c/p\u003e\n\u003c/br\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fremirobert%2Fkinder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fremirobert%2Fkinder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fremirobert%2Fkinder/lists"}