MessageCenterContent
@MainActor
public struct MessageCenterContent : View
The Message Center content view.
This view can be used to construct a custom Message Center. For a more turnkey solution, see MessageCenterView.
To use this view, a MessageCenterController must be supplied. The controller will be shared between the list and message views,
keeping the state in sync.
### Using it with your own navigation stack:
@StateObject
private var messageCenterController = MessageCenterController()
var body: some View {
NavigationStack(path: $messageCenterController.path) {
MessageCenterContent(controller: messageCenterController)
.navigationDestination(for: MessageCenterController.Route.self) { route in
switch(route) {
case .message(let messageID):
MessageCenterMessageViewWithNavigation(messageID: messageID)
@unknown default:
fatalError()
}
}
}
}
### Using it in a deprecated NavigationView or UIKIt:
@StateObject
private var messageCenterController = MessageCenterController()
var body: some View {
NavigationView {
ZStack {
MessageCenterContent(controller: self.messageCenterController)
NavigationLink(
destination: Group {
if case .message(let messageID) = self.messageCenterController.path.last {
MessageCenterMessageViewWithNavigation(messageID: messageID) {
// Clear selection on close
self.messageCenterController.path.removeAll()
}
} else {
EmptyView()
}
},
isActive: Binding(
get: { self.messageCenterController.path.last != nil },
set: { isActive in
if !isActive { self.messageCenterController.path.removeAll() }
}
)
) {
EmptyView()
}
.hidden()
}
}
}
-
Initializer.
Declaration
Swift
@MainActor public init( controller: MessageCenterController, listViewModel: MessageCenterMessageListViewModel )Parameters
controllerThe message center controller.
listViewModelThe message center list view model.
-
Initializer.
Declaration
Swift
@MainActor public init( controller: MessageCenterController, hostingController: UIViewController? = nil, predicate: (any MessageCenterPredicate)? = nil )Parameters
controllerThe message center controller.
hostingControllerA weak reference to the hosting controller to apply apperance changes.
predicateA predicate to filter messages.
-
The body of the view.
Declaration
Swift
@ViewBuilder @MainActor public var body: some View { get }
View on GitHub