To intercept UI element creation notifications, use MAFUIElementCreatorDelegate, which lets you create custom subviews or decorate the ones created by the framework.
MAFUIElementCreatorDelegate declares these APIs:
- (UIView*) willCreateUIElementWithId:(NSString*)uiElementId_in listItemIndex:(NSNumber*)listItemIndex_in tileDescriptor:(MAFTileDescriptorBase*)tileDescriptor_in context:(MAFContext*)context_in;
Implement this delegate method and return a valid UIView* to create a custom UI element. The method is invoked by the framework before subviews are created; therefore, you can use the uiElementId_in parameter to intercept only the UI elements of your choice. The tileDescriptor_in parameter provides additional information about the subview’s tile.
- (void) didCreateUIElement:(UIView**)uiElement_in_out id:(NSString*)uiElementId_in listItemIndex:(NSNumber*)listItemIndex_in tileDescriptor:(MAFTileDescriptorBase*)tileDescriptor_in context:(MAFContext*)context_in;
This delegate method is invoked after a UI Element is created. uiElement_in_out is passed as a reference, so you can decorate or replace the UIView.
- (UIViewController*) willCreateViewControllerWithUIElementId:(NSString*)uiElementId_in listItemIndex:(NSNumber*)listItemIndex_in tileDescriptor:(MAFTileDescriptorBase*)tileDescriptor_in context:(MAFContext*)context_in;
Implement this delegate method to provide a custom view controller for specific views. Register the delegate via the MAFTileCreatorDelegate’s registerUIElementCreatorDelegateForTile: API.
- (UIView*) willCreateUIElementWithId:(NSString*)uiElementId_in listItemIndex:(NSNumber*)listItemIndex_in tileDescriptor:(MAFTileDescriptorBase*)tileDescriptor_in context:(MAFContext*)context_in { UIView* result = nil; if ([uiElementId_in isEqualToString:@"CustomLabel "]) { UILabel* label = [[[UILabel alloc] init] autorelease]; label.text = @"This is a custom Label"; label.textColor = [UIColor redColor]; label.backgroundColor = [UIColor yellowColor]; result = label; } return result; }