2011-03-13 167 views
4

默认情况下,Sharekit使用actionSheet来共享项目。 有没有什么方法可以在一个小的UIView而不是在actionSheet中只显示特定的项目,比如只显示facebook,twitter和email?有没有办法自定义Sharekit?

编辑: 换句话说:

我有3个按钮,在我的UIView,一个为Facebook,Twitter和电子邮件。我不想使用Sharekit的actionSheet。有没有办法通过按我的UIButton's在Sharekit中逐一调用FBConnect,Twitter和Email共享?

回答

3

是的。这将需要一些工作,但它可以做到如下:

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

或你想要支持的其他选项(即if你只希望Twitter和Facebook添加@"SHKTwitter",数组)

这将消除其他选项, 。

因此,要做到这一点去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]; 
as.item.shareType = type; 

然后在相同的方法,删除此行:

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

我们为什么要删除这是因为早期我们去掉了更多的按钮的原因,现在我们必须确保代码不会将任何其他按钮与更多按钮混淆。更多的按钮必须被删除,因为它显示了使用其他共享方法的选项,我们不希望用户使用。如果我们没有删除它,用户仍然可以访问禁用的共享方法。

希望这会有所帮助。

+0

感谢您的回复,但我已经做到了。你误解我了。我不想在UIActionSheet中显示我的共享者(脸部,推特,电子邮件)。我想在我的smallView中显示它。我把3个按钮放在脸上,推特和电子邮件。我希望我现在清醒。 – kodcu 2011-03-13 20:02:04

+0

哦,对不起。我误解了。我不确定我是否可以帮助你解决你的问题,但如果我知道了,我会编辑我的答案。 – Andrew 2011-03-14 01:12:42

+0

我想通了。您是否希望我发布另一个回复,或者您是否已经找到答案 – Andrew 2011-03-20 21:06:34

1

新的方式与ShareKit 2.0最新版本,要做到这一点是覆盖在你的SHKConfigurator(延长DefaultSHKConfigurator以下方法。米)

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