0

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;     

}

  • (void)hideCurrentViewController { [self hideCurrentViewControllerAnimated:YES]; }
4

1 回答 1

1

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

于 2012-07-10T13:41:40.827 回答