element-ios/Riot/Modules/MatrixKit/Views/MXKTableViewHeaderFooterView/MXKTableViewHeaderFooterView.m

93 lines
2.0 KiB
Objective-C

/*
Copyright 2024 New Vector Ltd.
Copyright 2017 Vector Creations Ltd
SPDX-License-Identifier: AGPL-3.0-only
Please see LICENSE in the repository root for full details.
*/
#import "MXKTableViewHeaderFooterView.h"
#import "NSBundle+MatrixKit.h"
@implementation MXKTableViewHeaderFooterView
+ (UINib *)nib
{
// Check whether a nib file is available
NSBundle *mainBundle = [NSBundle mxk_bundleForClass:self.class];
NSString *path = [mainBundle pathForResource:NSStringFromClass([self class]) ofType:@"nib"];
if (path)
{
return [UINib nibWithNibName:NSStringFromClass([self class]) bundle:mainBundle];
}
return nil;
}
+ (NSString*)defaultReuseIdentifier
{
return NSStringFromClass([self class]);
}
- (void)awakeFromNib
{
[super awakeFromNib];
[self customizeTableViewHeaderFooterViewRendering];
}
- (void)prepareForReuse
{
[super prepareForReuse];
[self customizeTableViewHeaderFooterViewRendering];
}
- (instancetype)initWithReuseIdentifier:(NSString *)reuseIdentifier
{
// Check whether a xib is defined
if ([[self class] nib])
{
self = [[[self class] nib] instantiateWithOwner:nil options:nil].firstObject;
}
else
{
self = [super initWithReuseIdentifier:reuseIdentifier];
[self customizeTableViewHeaderFooterViewRendering];
}
if (reuseIdentifier.length)
{
// The provided identifier is not always conserved in the new created view.
// This depends how the method [initWithStyle:reuseIdentifier:] is trigerred.
// Trick: we store a copy of this identifier.
mxkReuseIdentifier = reuseIdentifier;
}
else
{
mxkReuseIdentifier = [[self class] defaultReuseIdentifier];
}
return self;
}
- (NSString*)reuseIdentifier
{
NSString *identifier = super.reuseIdentifier;
if (!identifier.length)
{
identifier = mxkReuseIdentifier;
}
return identifier;
}
- (void)customizeTableViewHeaderFooterViewRendering
{
// Do nothing by default.
}
@end