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.
}
}
希望,这对您有所帮助。
我问这个问题只是因为我对寻找答案感到沮丧。
我有一个带有 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.
}
}
希望,这对您有所帮助。