我使用ShareKit(www.getsharekit.com)將我的URL分享給Twitter和Facebook。我希望能夠刪除它指向的所有其他社交網絡,但不知道在哪裏編輯?如何自定義ShareKit操作單?
回答
從ShareKit /核心/ 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]];
}
的收藏是這樣的:
[NSArray arrayWithObjects:@"SHKTwitter",@"SHKFacebook",@"SHKReadItLater",nil]
類型是SHKShareType:
typedef enum
{
SHKShareTypeUndefined,
SHKShareTypeURL,
SHKShareTypeText,
SHKShareTypeImage,
SHKShareTypeFile
} SHKShareType;
在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;
爲switch語句的每個實例如下:
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
並刪除以下else if語句可
// More
else if (buttonIndex == sharers.count)
{
SHKShareMenu *shareMenu = [[SHKCustomShareMenu alloc] initWithStyle:UITableViewStyleGrouped];
shareMenu.item = item;
[[SHK currentHelper] showViewController:shareMenu];
[shareMenu release];
}
這種方法是懸而未決的是採取按鈕通常是更多的按鈕,並打開更多的選項。因此,通過刪除代碼與取消按鈕沒有關聯的操作,因此它只是關閉並釋放操作表,有效地創建取消按鈕。
希望我可以給你10個upvotes這樣一個徹底的解釋。這正是我需要的 - 謝謝! – 2011-01-19 05:54:11
多好的回答。我在一段時間內看到的最好的東西......以及像我這樣的低代表的人! – 2011-07-25 22:10:28
高超的解釋..加上10個投票 – Hadi 2011-07-28 07:35:23
請參閱my answer在其他線程上進行更全面的說明。
現在是在不改變ShareKit的代碼很容易配置,如果使用ShareKit 2.0
基本上,如果你只使用Facebook和Twitter,很容易不惹ShareKit的代碼。您可以輕鬆地使用兩個按鈕創建您自己的UIActionSheet,並調用ShareKit's convenience share方法。
想知道爲什麼投票? 「與ShareKit的代碼混亂」我的意思是自定義ShareKit的代碼在你的應用程序(隱藏更多按鈕),當它不是必要的。如果您想升級到較新版本的ShareKit,這將爲您贏得額外的工作。您可以使用ShareKit的共享器便捷方法直接使用經典的標準UIActionSheet實現相同的功能。 – 2011-12-02 13:28:18
對於不需要的服務不會出現在操作表上,您可以簡單地從項目中刪除相應的共享服務類。
轉到項目 - >共享程序 - >服務 - >選擇相應服務的.h和.m文件並將其刪除。
例如,可以通過刪除SHKFacebook.h和SHKFacebook.m來刪除Facebook選項。
注意:您必須檢查課程導入以避免錯誤。
新的方式與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];
}
最簡單的方法是編輯「SHKSharers.plist」,並保持您需要的服務。
- 1. ShareKit 2.0:如何在操作表中添加自定義的不共享項目?
- 2. 如何重用Wix自定義操作?
- 3. 如何自定義TTPostController操作按鈕
- 4. ActiveAdmin - 如何自定義編輯操作?
- 5. 如何創建自定義操作
- 6. 自定義Google表單發帖操作
- 7. Activeadmin自定義操作和表單
- 8. 表單操作 - 自定義網址
- 9. 1Password樣式自定義操作菜單
- 10. 如何編寫自定義流式自定義操作器
- 11. 如何自定義操作欄操作項?
- 12. Sharepoint自定義操作刪除網站操作菜單項
- 13. 如何創建自定義操作菜單列表
- 14. 如何自定義窗口菜單(Linux操作系統Ubuntu)
- 15. Objective-C - ShareKit自定義Twitter導航欄
- 16. 有沒有辦法自定義Sharekit?
- 17. 在自定義類上定義操作
- 18. 在Selenium中定義自定義操作
- 19. SourceTree自定義操作。 $ SHA
- 20. 自定義操作項ActionBarSherlock
- 21. 卸載自定義操作
- 22. 自定義操作欄
- 23. 自定義分割操作
- 24. 自定義操作欄
- 25. WIX C++自定義操作
- 26. 自定義操作欄sherlock
- 27. Rails自定義操作
- 28. AWS Cloudwatch自定義操作
- 29. Joomla ACL自定義操作
- 30. 自定義Rails操作
...指向此頁。 – 2011-07-25 21:56:11