# Use Full UI

This guide shows you how to use the prebuilt UI components to quickly integrate Agentforce chat functionality into your iOS app.

## Chat UI

The Chat UI is the primary chat view for interacting with Agents.

**TODO: <Image of Chat UI>**

To display the chat UI, use the createAgentforceChatView method. This method returns a SwiftUI view that you can present to the user.

```swift
do {
    let chatView = try agentforceClient.createAgentforceChatView(
        conversation: conversation,
        delegate: self,
        onContainerClose: {
            // Handle chat view close
        }
    )
    // Present the chatView in your SwiftUI hierarchy
} catch {
    // Handle error
}
```

The createAgentforceChatView method takes the following parameters:

- `conversation`: The AgentConversation object that you created earlier
- `delegate`: An object that conforms to the AgentforceUIDelegate protocol. This delegate receives notifications about UI events
- `onContainerClose`: A closure that's called when the user closes the chat view

## Handle UI Events

To handle UI events, implement the AgentforceUIDelegate protocol. This protocol has the following methods:

- `modifyUtteranceBeforeSending(_:)`: This method is called before an utterance is sent to the agent. It allows you to modify the utterance before it is sent.
- `didSendUtterance(_:)`: This method is called after an utterance has been sent to the agent.
- `userDidSwitchAgents(newConversation:)`: This method is called when the user switches to a different agent.

```swift
extension YourViewController: AgentforceUIDelegate {
    func modifyUtteranceBeforeSending(_ utterance: AgentforceUtterance) async -> AgentforceUtterance {
        // Modify the utterance if needed
        return utterance
    }

    func didSendUtterance(_ utterance: AgentforceUtterance) {
        // Handle sent utterance
    }

    func userDidSwitchAgents(newConversation: AgentConversation) {
        // Handle agent switch
    }
}
```

## Next Steps

- **Headless**: See [Build a Headless Experience](/docs/ai/agentforce-mobile-sdk/guide/agentforce-mobile-sdk-ios-headless.md) for custom UI
- **Customization**: See [Theming](/docs/ai/agentforce-mobile-sdk/guide/agentforce-mobile-sdk-ios-branding-theming.md) for visual customization
