This is a small module for building pyto_ui
views with UIKit. Here is an example with UIDatePicker
.
import objc_view as ov
from UIKit import UIDatePicker
from datetime import datetime
from typing import Callable
import pyto_ui as ui
PICKER_MODE_TIME = 0
PICKER_MODE_DATE = 1
PICKER_MODE_DATE_AND_TIME = 2
PICKER_MODE_COUNTDOWN_TIMER = 3
class DatePicker(ov.WrapperView): # Subclass `WrapperView`
objc_class = UIDatePicker # Specify the UIKit class
def __init__(self, mode):
self.mode = mode
super().__init__()
def get_date(self) -> datetime:
date = str(self.objc_view.date) # Get the description of an Objective-C object
obj = datetime.strptime(date, "%Y-%m-%d %H:%M:%S %z")
return obj
def on_change(self, func: Callable):
# Use `Target` as target and use `Selector` to make a selector.
self.objc_view.addTarget(
ov.Target, action=ov.Selector(func), forControlEvents=4096
)
def configure_view(self, view):
view.datePickerMode = self.mode
date_picker = DatePicker(PICKER_MODE_DATE)
date_picker.background_color = ui.COLOR_SYSTEM_BACKGROUND
def on_change():
date_picker.title = str(date_picker.get_date())
date_picker.on_change(on_change)
# Show the view as any `pyto_ui` view.
ui.show_view(date_picker, ui.PRESENTATION_MODE_SHEET)
date = date_picker.get_date()
print(date)