2010-10-24 15 views

risposta

14

Da 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]]; 
} 

favoriti è come:

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

tipo è SHKShareType:

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

in SHK.m lo trovi Metodo

+ (NSArray *)favoriteSharersForType:(SHKShareType)type 

e cambiare

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; 

a quanto segue per ogni istanza dell'istruzione switch:

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

o che cosa mai altre opzioni che si desidera supportare (cioè se desideri solo twitter e facebook aggiungi @ "SHKTwitter", all'array)

che eliminerà l'altra opti ma il foglio di azione che mostra le opzioni non riflette la modifica e continuerà a fornire l'opzione più, che dobbiamo anche disabilitare.

Quindi, per fare che andare a SHKActionSheet.m

in questo metodo è possibile cambiare il titolo da "Condividi" per qualcosa di più specifico (questa parte è opzionale) vale a dire "Condividi con Facebook e Twitter"

+ (SHKActionSheet *)actionSheetForType:(SHKShareType)type 

cambiamento

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; 

che in quello stesso metodo, eliminare questa linea

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

che rimuoverà il pulsante di più, ma ora il codice sarà ora confondere il pulsante di più con il pulsante di annullamento, in modo per risolvere questo, andare a questo metodo:

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

ed eliminare la seguente else if

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

ciò che questo metodo è sospettato di fare è prendere il pulsante che normalmente è il pulsante più e aprire più opzioni. Quindi, eliminandolo, il codice non ha un'azione associata con il pulsante Annulla, quindi chiude e rilascia il foglio azioni, creando effettivamente un pulsante Annulla

+0

Vorrei poterti dare 10 upvotes per una spiegazione così approfondita. Questo è esattamente ciò di cui avevo bisogno - grazie! –

+0

Che bella risposta. La cosa migliore che ho visto su SO da un po '... e da qualcuno con un basso rappresentante come me! –

+0

spiegazione superba .. plus 10 uppvotes – Hadi

2

Vedere my answer sull'altro thread con una spiegazione più approfondita.

ora è facilmente configurabile senza modificare il codice di ShareKit, se si utilizza ShareKit 2.0

In sostanza, se si utilizza solo Facebook e Twitter, è più facile non fare confusione con il codice di ShareKit. Puoi facilmente creare il tuo UIActionSheet con due pulsanti e chiamare i metodi ShareKit's convenience share.

+0

wonder why down vote? Con "pasticcio con il codice di ShareKit" intendo personalizzare il codice di ShareKit nella tua app (nascondendo il pulsante Altro), quando non è necessario. Ciò ti consentirà di ottenere un lavoro aggiuntivo, se desideri eseguire l'aggiornamento alla versione più recente di ShareKit. È possibile ottenere lo stesso utilizzando i metodi di convenienza di ShareKit direttamente con il classico standard UIActionSheet. –

2

Per i servizi indesiderati che non compaiono sul foglio di azione, è sufficiente rimuovere le rispettive classi di servizi di condivisione dal progetto.

Passare al progetto -> Condivisioni -> Servizi -> selezionare i file .h e .m del rispettivo servizio ed eliminarlo.

Ad esempio, l'opzione di Facebook può essere rimossa cancellando SHKFacebook.h e SHKFacebook.m.

Nota: è necessario controllare l'importazione della classe per evitare errori.

7

Il nuovo modo di fare questo con l'ultima versione di ShareKit 2.0 è quello di sovrascrivere i seguenti metodi nel SHKConfigurator (estendendo 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

Il modo più semplice è quello di modificare "SHKSharers.plist" e mantenere i servizi di cui hai bisogno.

Problemi correlati