从另一个类Objective-C调用时方法不起作用

时间:2016-01-19 20:34:19

标签: ios objective-c class methods

我的应用程序中有以下方法。

- (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可以工作。有什么想法吗?

1 个答案:

答案 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投入太多时间。看看他们的导游。现在!