In UIKit, you can retrieve the list of members or participants in a channel through the SBUMemberListViewController
class. This class is used to display a list of channel members, participants, operators, muted members, and banned members using the SBUUserCell
class.
Note: If you set the starting point of your chat service to be the channel list, group channel, open channel, or channel settings, you can seamlessly guide your users to the member/participant list view.
SBUMemberListViewController
is composed of four different types of member list.
Type | Description |
---|---|
.channelMembers | A list of members in the channel. |
.operators | A list of operators in the channel. |
.mutedMembers | A list of muted members in the channel. |
.bannedMembers | A list of banned users from the channel. |
You can start building a member/participant list view through the SBUMemberListViewController
class. The same class can be used to create a view for muted member list and ban user list. Use either the init(channelUrl:channelType:members:memberListType:)
or init(channel:members:memberListType:)
initializer to create the instance and display the view as shown below.
The following items are key elements of SBUMemberListViewController
that are used to create a functional member/participant list view.
In the SBUMemberListViewController
class, SBUMemberListModule
and its components are used to create and display the member/participant list view. The module is composed of two components: headerComponent
and listComponent
.
Property name | Type | Default value |
---|---|---|
headerComponent | SBUMemberListModule.Header | SBUModuleSet.memberListModule.headerComponent |
listComponent | SBUMemberListModule.List | SBUModuleSet.memberListModule.listComponent |
Each module component is assigned a value from the SBUModuleSet
class and gets added to the view in the setupView()
method of the Sendbird UIKit's view life cycle. Then, the configure
method of each module component is called to set the property values and display the view.
The headerComponent
includes a channel title, a back button that takes the user to the previous view, and a button that adds new members or participants to the channel. Each property corresponds to the elements in the navigation bar of SBUMemberListViewController
.
The following table shows the parameters of the configure
method of the headerComponent
.
Parameter name | Type |
---|---|
delegate | SBUMemberListModuleHeaderDelegate |
memberListType | ChannelMemberListType |
theme | SBUUserListTheme |
componentTheme | SBUComponentTheme |
Note: To learn more about the delegate and the properties of the
headerComponent
, go to the API reference page.
The listComponent
shows a list of all members of a group channel or all participants of an open channel. It's also used in other moderation views to display the operator list, muted member list, and banned user list. The following table shows the parameters of the configure
method of the listComponent
.
Parameter name | Type |
---|---|
delegate | SBUMemberListModuleListDelegate |
dataSource | SBUMemberListModuleListDataSource |
memberListType | ChannelMemberListType |
theme | SBUUserListTheme |
componentTheme | SBUComponentTheme |
Note: To learn more about the delegate, data source, and the properties of the
listComponent
, go to the API reference page.
The SBUMemberListViewController
class uses a view model that is a type of the SBUMemberListViewModel
class. The view model is created in the initializer of the view controller through the createViewModel(channel:channelUrl:channelType:members:type:)
method. When the view model object is created, it retrieves member/participant list data from Chat SDK to the view controller and updates the view through the (_:didChangeMembers:needsToReload:)
event.
Note: If the value of
channel
orchannelUrl
is invalid, the view model cannot retrieve the member/participant list.
The following table shows the parameters of the createViewModel
method.
Parameter name | Type | Description |
---|---|---|
channel | SBDBaseChannel | Specifies the channel value. (Default: nil) |
channelUrl | String | Specifies the URL of the channel. (Default: nil) |
channelType | SBDChannelType | Specifies the type of channel. This parameter needs to be specified with |
members | [SBUUser] | Specifies a custom member list if you wish to use your own list of members. (Default: nil) |
type | ChannelMemberListType | Specifies the type of each member in the list. |
Note: To learn more about the methods and the event delegates of the view model, go to this API reference page.
To learn more about the properties of SBUMemberListViewController
, go to the API reference page.
You can customize the member/participant list view by changing the view controller, module component, and view model that correspond to this key function.
There are two ways to customize the view controller: change the default view controller value in the global SBUViewControllerSet
class or set a single-use custom view controller in the key function.
The custom view controller in the code below is used in the following customization examples.
- Change the value of
SBUViewControllerSet.MemberListViewController
.
- Use a one-time custom view controller in the member/participant list view.
There are two ways to customize a module component: change the default module component value in the global SBUModuleSet.memberListModule
class or set a single-use custom module component in the view controller.
The custom header component in the code below is used in the following customization examples.
- Change the value of
SBUModuleSet.memberListModule.headerComponent
.
- Change the module component in
SBUMemberListViewController
.
Note: To learn more about the methods of
SBUMemberListModule
, go to the API reference page.
In order to use a custom view model or customize the existing view model's event delegate, you must override the view controller. You can also customize different query types in the view model to retrieve different types of lists. See the query types below.
memberListQuery
operatorListQuery
mutedMemberListQuery
bannedMemberListQuery
participantListQuery
- Use a customized view model.
- Customize the view model's event delegate.