How to customize ShareKit actionsheet?

Sheehan Alam picture Sheehan Alam · Oct 24, 2010 · Viewed 8.7k times · Source

I am using ShareKit (www.getsharekit.com) to share my URL's to Twitter and Facebook. I want to be able to remove all of the additional social network it points to, but am not sure where to edit?

Answer

Andrew  picture Andrew · Dec 19, 2010

in SHK.m find this method

+ (NSArray *)favoriteSharersForType:(SHKShareType)type

and change

switch (type) 
    {
        case SHKShareTypeURL:
            favoriteSharers = [NSArray arrayWithObjects:@"SHKTwitter",@"SHKFacebook",@"SHKReadItLater",nil];
            break;

        case SHKShareTypeImage:
            favoriteSharers = [NSArray arrayWithObjects:@"SHKTwitter",@"SHKFacebook",@"SHKReadItLater",nil];
            break;

        case SHKShareTypeText:
            favoriteSharers = [NSArray arrayWithObjects:@"SHKTwitter",@"SHKFacebook",@"SHKReadItLater",nil];
            break;

        case SHKShareTypeFile:
            favoriteSharers = [NSArray arrayWithObjects:@"SHKTwitter",@"SHKFacebook",@"SHKReadItLater",nil];
            break;

to the following for each instance of the switch statement:

favoriteSharers = [NSArray arrayWithObjects:@"SHKFacebook", nil];

or what ever other options you want to support (ie if you only want twitter and facebook add @"SHKTwitter", to the array)

that will eliminate the other options but the action sheet that displays the options wont reflect the change and it will still give the more option, which we also need to disable.

So to do that go to SHKActionSheet.m

in this method you can change the title from "Share" to something more specific (this part is optional) ie "Share with Facebook and Twitter"

+ (SHKActionSheet *)actionSheetForType:(SHKShareType)type

change

SHKActionSheet *as = [[SHKActionSheet alloc] initWithTitle:SHKLocalizedString(@"PUT YOUR NEW TITLE HERE")
                                                  delegate:self
                                         cancelButtonTitle:nil
                                    destructiveButtonTitle:nil
                                         otherButtonTitles:nil];
as.item = [[[SHKItem alloc] init] autorelease];
as.item.shareType = type;

than in that same method, delete this line

    // Add More button
[as addButtonWithTitle:SHKLocalizedString(@"More...")];

that will remove the more button but now the code will now confuse the more button with the cancel button, so to fix that, go to this method:

- (void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated

and delete the following else if statement

// More
else if (buttonIndex == sharers.count)
{
    SHKShareMenu *shareMenu = [[SHKCustomShareMenu alloc] initWithStyle:UITableViewStyleGrouped];
    shareMenu.item = item;
    [[SHK currentHelper] showViewController:shareMenu];
    [shareMenu release];
}

what this method is susposted to do is take the button that is normally the more button and open the more options. So by deleting it the code has no associated action with the cancel button so it just closes and release the action sheet, effectively creating a cancel button