Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

README.md

TIUIKitCore

Core UI elements: protocols, views and helpers.

Protocols

Models

Factories

AlertsFactory

Use to present alerts in a few lines of code. Can be used for UIKit and SwiftUI

You can initialize AlertsFactory with your own LocalizationProvider or use DefaultAlertLocalizationProvider

Your view or view controller must implement AlertPresentationContext protocol

The implementation of the protocol says that an alert can be shown from this object. Also there is a UIKitAlertContext protocol designed to make it easier to work with AlertPresentationContext protocol. By default, no changes need to be made for UIKit view controllers to make them conform to UIKitAlertContext.

// View controller that can present alerts.
class ViewController: UIViewController, UIKitAlerContext {
    // Realization of the view controller
}

Your alert controller must implement AlertPresentable protocol

The implementation of this protocol says that an alert can be shown from the context. By default, the standard UIAlertController conforms to the protocol. Accordingly, when using a custom alert, it must also conform to the protocol:

import PopupDialog

extension PopupDialog: AlertPresentable {
    @discardableResult
    public func configured(with configuration: AlertDescriptor) -> Self {
        title = configuration.title

        for action in configuration.actions {
            addButton(DefaultButton(title: action.title, action: action.action))
        }

        return self
    }

    public func present(on context: AlertPresentationContext, completion: VoidClosure?) {
        context.present(self, animated: true, completion: completion)
    }
}

Custom alerts

// Presents alert
func presentAlert() {
    factory
        .alert(title: "Alert's title",
               message: "Alert's message",
               tint: .systemBlue,
               actions: [
                   AlertAction(title: "Ok", style: .default, action: nil),
                   AlertAction(title: "Cancel", style: .cancel, action: nil)
               ])
        .present(on: self)
}

// Presents sheet alert
func presentSheetAlert() {
    factory
        .sheetAlert(title: "Alert's title",
               message: "Alert's message",
               tint: .systemBlue,
               actions: [
                   AlertAction(title: "Ok", style: .default, action: nil),
                   AlertAction(title: "Cancel", style: .cancel, action: nil)
               ])
        .present(on: self)
}

Default alerts

// Ok alert
func presentOkAlert() {
    factory
        .okAlert(title: "Title", message: "Message")
        .present(on: self)
}

// Retry alert
func presentRetryAlert() {
    factory
        .retryAlert(title: "Title", message: "Message") { [weak self] in
            self?.presentOkAlert()
        }
        .present(on: self)
}

// Dialogue alert
func presentDialogueAlert() {
    factory
        .dialogueAlert(title: "Title", message: "Message")
        .present(on: self)
}

Installation via SPM

You can install this framework as a target of LeadKit.