我的应用程序中有以下方法。
- (void)next{
NSLog(@"called!");
NSArray *visibleItems = [self.collectionView indexPathsForVisibleItems];
NSIndexPath *currentItem = [visibleItems objectAtIndex:0];
NSIndexPath *nextItem = [NSIndexPath indexPathForItem:currentItem.item + 1 inSection:currentItem.section];
[self.collectionView scrollToItemAtIndexPath:nextItem atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally animated:YES];
CATransition *fadeTextAnimation = [CATransition animation];
fadeTextAnimation.duration = 0.2;
fadeTextAnimation.type = kCATransitionFade;
[self.navigationController.navigationBar.layer addAnimation: fadeTextAnimation forKey: @"fadeText"];
self.navigationItem.title = @"Test";
}
当我从它实现的类中调用它时它工作得很好。但是如果我从另一个类调用它,NSLog工作正常,但没有其他事情发生。我想它必须对self.collectionView
执行某些操作,而不是在从另一个类调用时实际引用我的collectionView
,但我不知道如何解决该问题。你能指点我正确的方向吗?
编辑:这就是我从另一个类调用我的方法的方法。
ExerciseViewController *vc;
[vc next];
该方法被称为正常,因为NSLog工作,只是其余的代码没有正确执行。
编辑2:我将代码更改为
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];
ExerciseViewController *controller = [mainStoryboard instantiateViewControllerWithIdentifier: @"id"];
[controller next];
但是,只有NSLog可以工作。有什么想法吗?
答案 0 :(得分:3)
messages: Messages.find({gameId: gameId}, {sort: {createdAt: -1}}).fetch()
您只声明视图控制器,不要实例化对象。
ExerciseViewController *vc;
[vc next];
为零,nil可以接受任何消息,因为这不会导致崩溃。
vc
也不会在故事板中创建View Controller作为设计,您必须从故事板中实例化。
创建ExerciseViewController *vc = [[ExerciseViewController alloc] init];
对象后,您必须在屏幕上显示它。即将其推送到视图控制器以呈现它。你会发现大量的示例代码。你只需要搜索它。你似乎没有在https://developer.apple.com投入太多时间。看看他们的导游。现在!