> For the complete documentation index, see [llms.txt](https://docs.taptalk.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.taptalk.io/onetalk-omnichannel-documentation/onetalk-channel-integration/live-chat/onetalk-ios/navigate-live-chat-ui.md).

# Navigate Live Chat UI

You may optionally navigate through TapTalk.io Omnichannel Live Chat's UI, such as case list and chat room, using the following methods:

### Open TapTalk Omnichannel View

To open TapTalk Omnichannel's view UI for your application, you can use the **`presentTapTalkLiveViewWithCurrentNavigationController:animated`** or **`pushTapTalkLiveViewWithCurrentNavigationController:animated`** method from the **TapTalkLive** class. This will open an activity containing a chat room list for your user, and will open a **Create Case Form** activity on top if the user is new or do not have any existing case.

{% tabs %}
{% tab title="Objective-C" %}
{% code title="YourViewController.m" %}

```csharp
#import <TapTalkLive/TapTalkLive.h>

/**
Called to show TapTalk Live view with present animation

 @param navigationController (UINavigationController *) your current navigation controller
 @param animated (BOOL) make the present animated or not
*/
[[TapTalkLive sharedInstance] presentTapTalkLiveViewWithCurrentNavigationController:NAVIGATION_CONTROLLER animated:ANIMATED];

/**
Called to show TapTalk Live view with push animation

 @param navigationController (UINavigationController *) your current navigation controller
 @param animated (BOOL) make the present animated or not
*/
[[TapTalkLive sharedInstance] pushTapTalkLiveViewWithCurrentNavigationController:NAVIGATION_CONTROLLER animated:ANIMATED];

/**
Obtain main view controller of TapTalk Live
*/
[[TapTalkLive sharedInstance] getTapTalkLiveViewMainController];
```

{% endcode %}
{% endtab %}
{% endtabs %}

{% hint style="info" %}
**Parameters**\
\&#xNAN;**`NAVIGATION_CONTROLLER`**: (UINavigationController) your current active navigation controller\
\&#xNAN;**`ANIMATED`**: (BOOL) boolean to state animation active or not
{% endhint %}

### Open Case List View

You can open the user's case list page by calling **`openCaseListView`**. If no user is authenticated, create case form will be opened instead.

{% tabs %}
{% tab title="Objective-C" %}
{% code title="YourViewController.m" %}

```csharp
#import <TapTalkLive/TapTalkLive.h>

[[TapTalkLive sharedInstance] presentCaseListViewWithCurrentNavigationController:NAVIGATION_CONTROLLER animated:ANIMATED];
```

{% endcode %}
{% endtab %}
{% endtabs %}

### Open Existing Case's Chat Room

To use this method, you need to first finish [authentication](/onetalk-omnichannel-documentation/onetalk-channel-integration/live-chat/onetalk-ios/authentication.md#authenticate-user-optional) process.

Once authenticated, you can open a chat room from one the user's case by calling **`openCaseChatRoom`**, providing the **context** and **XC Room ID**. You may obtain XC Room ID from one of the [active user's case list](/onetalk-omnichannel-documentation/onetalk-channel-integration/live-chat/onetalk-ios/case-and-topic.md#get-active-users-case-list), or by [creating a new case](/onetalk-omnichannel-documentation/onetalk-channel-integration/live-chat/onetalk-ios/case-and-topic.md#create-a-new-case).

{% tabs %}
{% tab title="Objective-C" %}
{% code title="YourViewController.m" %}

```csharp
#import <TapTalkLive/TapTalkLive.h>

[[TapTalkLive sharedInstance] openCaseChatRoomWithXCRoomID:XC_ROOM_ID
                                      navigationController:NAVIGATION_CONTROLLER 
                                                  animated:ANIMATED
success:^(NSString *successMessage) {
    // Successfully opened chat room
}
failure:^(NSError *error) {
    
}];
```

{% endcode %}
{% endtab %}
{% endtabs %}

{% hint style="info" %}
**Parameters**\
\&#xNAN;**`XC_ROOM_ID`**: (String) XC Room ID of the user's case, can be obtained from [**`getUserCaseList`**](/onetalk-omnichannel-documentation/onetalk-channel-integration/live-chat/onetalk-android/case-and-topic.md#get-active-users-case-list) or [**`createNewCase`**](/onetalk-omnichannel-documentation/onetalk-channel-integration/live-chat/onetalk-android/case-and-topic.md#create-a-new-case)`(TTLCaseModel.tapTalkXCRoomID)`\
\&#xNAN;**`NAVIGATION_CONTROLLER`**: (UINavigationController) your current active navigation controller\
\&#xNAN;**`ANIMATED`**: (BOOL) boolean to state animation active or not
{% endhint %}
