我是swiftUI的新手。现在,我正在开发一个应用程序,它可以记录你的任务进度。在应用程序中,我需要用用户每天的目标来填充列表我知道我们可以在故事板中使用app delegate,但是对于SwiftUI,在应用CoreData Manager之后,app delegate已经消失,我们使用app.swift代替,我现在该在哪里结账?2谢谢!
ruoxqz4g1#
根据Leo Dabus关于监视NSCalendarDayChanged通知的建议,这里有一些代码显示了如何在SwiftUI中完成这一操作。
NSCalendarDayChanged
import SwiftUI struct ContentView: View { @ObservedObject var viewModel = ContentViewModel() var body: some View { VStack { Text(viewModel.displayDate) // List of goals } } } class ContentViewModel: ObservableObject { @Published var currentDate: Date = Date() var displayDate: String { Self.simpleDateFormatter.string(from: currentDate) } private static let simpleDateFormatter: DateFormatter = { let formatter = DateFormatter() formatter.dateFormat = "MMMM d" return formatter }() init() { NotificationCenter.default.addObserver(self, selector: #selector(dayDidChange), name: .NSCalendarDayChanged, object: nil) } @objc func dayDidChange() { currentDate = Date() } }
nkcskrwz2#
1.您可以在AppDelegate中使用- (void)applicationSignificantTimeChange:(UIApplication *)application;来监视这类变更。1.您也可以在AppDelegate UIApplication.significantTimeChangeNotification中注册通知。iOS将同时调用已注册的通知方法以及上述委托方法。第一个1.如果您想直接连接SwiftUI,您可以向发布者注册Swift视图。发布者将监听通知名称UIApplication.significantTimeChangeNotification。可以根据您的要求使用任何一种方式。
- (void)applicationSignificantTimeChange:(UIApplication *)application;
UIApplication.significantTimeChangeNotification
struct ContentView: View { @State var dayDetails: String = "Hello World" var body: some View { Text(dayDetails) .padding().onReceive(NotificationCenter.default.publisher(for: UIApplication.significantTimeChangeNotification), perform: { _ in dayDetails = "Day has changed" }) } }
slhcrj9b3#
您可以使用NSCalendarDayChanged通知在日期更改时执行一些代码。
struct ContentView: View { @State var text: String = "Hello World" var body: some View { Text(text) .onReceive(NotificationCenter.default.publisher(for: Notification.Name.NSCalendarDayChanged)) { _ in text = "Day has changed" }) } }
3条答案
按热度按时间ruoxqz4g1#
根据Leo Dabus关于监视
NSCalendarDayChanged
通知的建议,这里有一些代码显示了如何在SwiftUI中完成这一操作。nkcskrwz2#
1.您可以在AppDelegate中使用
- (void)applicationSignificantTimeChange:(UIApplication *)application;
来监视这类变更。1.您也可以在AppDelegate
UIApplication.significantTimeChangeNotification
中注册通知。iOS将同时调用已注册的通知方法以及上述委托方法。第一个
1.如果您想直接连接SwiftUI,您可以向发布者注册Swift视图。发布者将监听通知名称
UIApplication.significantTimeChangeNotification
。可以根据您的要求使用任何一种方式。
slhcrj9b3#
您可以使用
NSCalendarDayChanged
通知在日期更改时执行一些代码。