Xcode 从 AppDelegate 和 UICollectionView 删除单元格更改视图

Xcode change view from AppDelegate and UICollectionView delete cell

我问这个问题只是因为我对寻找答案感到沮丧。

我有一个带有 facebook 登录界面的应用程序,如果用户已经登录到 facebook,我希望更改根视图控制器。 我找到了如何检查用户是否已登录,但我似乎无法找到如何从 AppDelegate 正确更改 rootViewcontroller。 我想展示的下一个视图有导航控制器,所以我也想展示它。

我遇到的下一个问题是我不知道如何向 UICollectionView 中的单元格添加删除按钮。 我希望它被隐藏,长按其中一个单元格后,所有按钮都会显示在单元格上。 我想出了如何添加长按手势,而不是按钮。

有什么帮助吗? 抱歉,如果这是一个愚蠢的问题,但我现在很绝望。 谢谢!

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.

if (FBSession.activeSession.isOpen)
{
    [FBRequestConnection startForMeWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
        if (!error) {
            _userFacebookData = result;

            UIStoryboard *yourStoryB = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
            PasscodeEnter *vc = [yourStoryB instantiateViewControllerWithIdentifier:@"enter_password"];
            self.window.rootViewController = vc ;

        } else {
            NSLog(@"couldn't fetch the user data");
        }
    }];


}
else {
    // try to open session with existing valid token
    NSArray *permissions = [[NSArray alloc] initWithObjects: @"public_profile", @"email",nil];
    FBSession *session = [[FBSession alloc] initWithPermissions:permissions];
    [FBSession setActiveSession:session];
    if([FBSession openActiveSessionWithAllowLoginUI:NO]) {
        [FBRequestConnection startForMeWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
            if (!error) {
                _userFacebookData = result;

                UIStoryboard *yourStoryB = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
                PasscodeEnter *vc = [yourStoryB instantiateViewControllerWithIdentifier:@"enter_password"];
                self.window.rootViewController = vc ;

            } else {
                NSLog(@"couldn't fetch the user data");
            }


        }];
    }
}

[FBLoginView class];
[FBProfilePictureView class];


return YES;

}

在您的 applicationDidFinishLaunching 中:

使用此代码更改您的初始视图控制器,

UIStoryboard *yourStoryB = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
_yourNavigationVC = [yourStoryB instantiateViewControllerWithIdentifier:@"MyNavigationVC"];

self.window.rootViewController = _yourNavigationVC ;

在你的 Storyboard 中创建一个新的 ViewContoller,并给它一个标识符并使​​用它。希望对你有帮助。

要检测,长按在您的单元格中使用此代码:

UILongPressGestureRecognizer* longPressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(gestureHandler:)];
[longPressGesture setMinimumPressDuration:2.0];
[cell addGestureRecognizer:longPressGesture];


-(void)gestureHandler:(UISwipeGestureRecognizer *)gesture
 {
    if(UIGestureRecognizerStateBegan == gesture.state)
    {
        UICollectionViewCell *cell = (UICollectionViewCell *)[[gesture view] superview];
        //Now add delete button.
   }
}

希望,这对您有所帮助。