iOS ShareKit取消按钮不适用于Xcode 4.2

时间:2012-07-10 01:29:43

标签: ios viewcontroller sharekit

iOS Sharekit与之前的Xcode一起使用但是4.2它不再起作用了,当我点击取消按钮时它会转到这个例行程序

在SHK.m内部

  - (void)hideCurrentViewControllerAnimated:(BOOL)animated
  {


if (isDismissingView)
return;

if (currentView != nil)
{
    // Dismiss the modal view
    if ([currentView parentViewController] != nil)
    {
        self.isDismissingView = YES;
        [[currentView parentViewController] dismissModalViewControllerAnimated:animated];
    }

    else
        self.currentView = nil;
}

}

我踩了代码,它只是点击if(isDissmissingView)而它只是返回。
所以,我手动插入代码

   [[currentView parentViewController] dismissModalViewControllerAnimated:animated];

到例程的顶部,但这没有做任何事情。

我还包括一些其他参考代码

  - (void)showViewController:(UIViewController *)vc

{

  if (rootViewController == nil)
{
    // Try to find the root view controller programmically

    // Find the top window (that is not an alert view or other window)
    UIWindow *topWindow = [[UIApplication sharedApplication] keyWindow];
    if (topWindow.windowLevel != UIWindowLevelNormal)
    {
        NSArray *windows = [[UIApplication sharedApplication] windows];
        for(topWindow in windows)
        {
            if (topWindow.windowLevel == UIWindowLevelNormal)
                break;
        }
    }

    UIView *rootView = [[topWindow subviews] objectAtIndex:0];  
    id nextResponder = [rootView nextResponder];

    if ([nextResponder isKindOfClass:[UIViewController class]])
        self.rootViewController = nextResponder;

    else
        NSAssert(NO, @"ShareKit: Could not find a root view controller.  You can assign one manually by calling [[SHK currentHelper] setRootViewController:YOURROOTVIEWCONTROLLER].");
}

// Find the top most view controller being displayed (so we can add the modal view to it and not one that is hidden)
UIViewController *topViewController = [self getTopViewController];  
if (topViewController == nil)
    NSAssert(NO, @"ShareKit: There is no view controller to display from");


// If a view is already being shown, hide it, and then try again
if (currentView != nil)
{
    self.pendingView = vc;
    [[currentView parentViewController] dismissModalViewControllerAnimated:YES];
    return;
}

// Wrap the view in a nav controller if not already
if (![vc respondsToSelector:@selector(pushViewController:animated:)])
{
    UINavigationController *nav = [[[UINavigationController alloc] initWithRootViewController:vc] autorelease];

    if ([nav respondsToSelector:@selector(modalPresentationStyle)])
        nav.modalPresentationStyle = [SHK modalPresentationStyle];

    if ([nav respondsToSelector:@selector(modalTransitionStyle)])
        nav.modalTransitionStyle = [SHK modalTransitionStyle];

    nav.navigationBar.barStyle = nav.toolbar.barStyle = [SHK barStyle];

    [topViewController presentModalViewController:nav animated:YES];            
    self.currentView = nav;
}

// Show the nav controller
else
{       
    if ([vc respondsToSelector:@selector(modalPresentationStyle)])
        vc.modalPresentationStyle = [SHK modalPresentationStyle];

    if ([vc respondsToSelector:@selector(modalTransitionStyle)])
        vc.modalTransitionStyle = [SHK modalTransitionStyle];

    [topViewController presentModalViewController:vc animated:YES];
    [(UINavigationController *)vc navigationBar].barStyle = 
    [(UINavigationController *)vc toolbar].barStyle = [SHK barStyle];
    self.currentView = vc;
}

self.pendingView = nil;     

}

  • (无效)hideCurrentViewController { [self hideCurrentViewControllerAnimated:YES]; }

1 个答案:

答案 0 :(得分:1)

这是一个已知错误,出现在ios5上。很久以前在ShareKit 2.0修复了这个问题。如果您决定升级,请务必非常仔细地按照new install wiki字面意思,因为与原始的sharekit相比,许多事情都发生了变化