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

时间:2015-03-27 14:57:36

标签: xcode uicollectionview segue uicollectionviewcell appdelegate

我之所以提出这个问题只是因为我对寻找答案感到沮丧。

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

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

任何帮助? 对不起,如果它是一个dumm问题,但现在我无所事事。 谢谢!

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

}

1 个答案:

答案 0 :(得分:0)

在你的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.
   }
}

希望,这有帮助。