2010-10-24 4 views
14

Я использую ShareKit (www.getsharekit.com), чтобы поделиться своими URL-адресами с Twitter и Facebook. Я хочу иметь возможность удалить всю дополнительную социальную сеть, на которую он указывает, но не уверен, где редактировать?Как настроить таблицу действий ShareKit?

ответ

14

От ShareKit/CORE/SHK.m:

[SHK setFavorites: (NSArray *)favs forType:(SHKShareType)type] 

+ (void)setFavorites:(NSArray *)favs forType:(SHKShareType)type 
{ 
    [[NSUserDefaults standardUserDefaults] setObject:favs forKey:[NSString stringWithFormat:@"%@%i", SHK_FAVS_PREFIX_KEY, type]]; 
} 

Favs, как:

[NSArray arrayWithObjects:@"SHKTwitter",@"SHKFacebook",@"SHKReadItLater",nil] 

тип SHKShareType:

typedef enum 
{ 
    SHKShareTypeUndefined, 
    SHKShareTypeURL, 
    SHKShareTypeText, 
    SHKShareTypeImage, 
    SHKShareTypeFile 
} SHKShareType; 
49

в SHK.m найти это Метод

+ (NSArray *)favoriteSharersForType:(SHKShareType)type 

и изменить

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; 

к следующим для каждого экземпляра заявления переключателя:

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

или что когда-либо другие опции, которые вы хотите поддержать (т.е. если вы хотите twitter и facebook добавьте @ «SHKTwitter» к массиву)

, который устранит другие opti но лист действий, который отображает параметры, не отражает изменения, и он все равно даст больше возможностей, которые также необходимо отключить.

Так, чтобы сделать это пойти в SHKActionSheet.m

в этом методе вы можете изменить название от «Доли» к чему-то более конкретному (эта часть не является обязательной), то есть «Поделиться с Facebook и Twitter»

+ (SHKActionSheet *)actionSheetForType:(SHKShareType)type 

изменение

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; 

, чем в том же методе, удалите эту строку

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

что удалит больше кнопки, но теперь код теперь будет смущать больше кнопки с помощью кнопки отмены, так чтобы исправить это, перейдите к этому методу:

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

и удалите следующие еще, если заявление

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

Что нужно сделать этому методу, так это взять кнопку, которая обычно является большей кнопкой и открывает больше опций. Поэтому, удалив его, код не имеет никакого связанного действия с кнопкой отмены, поэтому он просто закрывает и отпускает лист действий, эффективно создавая кнопку отмены

+0

Жаль, что я не мог дать вам 10 голосов для такого подробного объяснения. Это именно то, что мне нужно - спасибо! –

+0

Какой прекрасный ответ. Лучшая вещь, которую я видел на SO в то время ... и кто-то с низким представителем вроде меня! –

+0

превосходное объяснение .. плюс 10 uppvotes – Hadi

2

См. my answer на другой ветке с более подробными пояснениями.

теперь легко настраивается без изменения кода ShareKit, в если вы используете ShareKit 2.0

В принципе, если вы используете только Facebook и Twitter, то проще не связываться с кодом ShareKit в. Вы можете легко создать собственный лист UIActionSheet с двумя кнопками и вызвать методы ShareKit's convenience share.

+0

интересно, почему голос? С «беспорядком с кодом ShareKit» я имею в виду настроить код ShareKit в вашем приложении (скрывая кнопку «Дополнительно»), когда это необязательно. Это даст вам дополнительную работу, если вы хотите перейти на более новую версию ShareKit. Вы можете добиться того же, используя методы совместного использования ShareKit, непосредственно с классическим стандартным UIActionSheet. –

2

Для того, чтобы нежелательные услуги не отображались в листе действий, вы можете просто удалить из проекта соответствующие классы сервисов доступа.

Перейти к проекту -> Sharers -> Services -> выбрать файлы .h и .m соответствующей службы и удалить их.

Например, вариант Facebook можно удалить, удалив SHKFacebook.h и SHKFacebook.m.

Примечание: вам нужно будет проверить импорт класса, чтобы избежать ошибок.

7

Новый способ сделать это с последней версией ShareKit 2.0 перезаписать следующие методы в вашем SHKConfigurator (расширение DefaultSHKConfigurator.m)

// SHKActionSheet settings 
- (NSNumber*)showActionSheetMoreButton { 
    return [NSNumber numberWithBool:true];// Setting this to true will show More... button in SHKActionSheet, setting to false will leave the button out. 
} 

/* 
Favorite Sharers 
---------------- 
These values are used to define the default favorite sharers appearing on ShareKit's action sheet. 
*/ 
- (NSArray*)defaultFavoriteURLSharers { 
    return [NSArray arrayWithObjects:@"SHKTwitter",@"SHKFacebook", @"SHKReadItLater", nil]; 
} 
- (NSArray*)defaultFavoriteImageSharers { 
    return [NSArray arrayWithObjects:@"SHKMail",@"SHKFacebook", @"SHKCopy", nil]; 
} 
- (NSArray*)defaultFavoriteTextSharers { 
    return [NSArray arrayWithObjects:@"SHKMail",@"SHKTwitter",@"SHKFacebook", nil]; 
} 
0

Самый простой способ для редактирования «SHKSharers.plist» и сохранить услуги, которые вам нужны.

Смежные вопросы