gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 19:40:07 24 4
gpt4 key购买 nike

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

- (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 有效。有什么想法吗?

最佳答案

ExerciseViewController *vc;
[vc next];

您只声明 View Controller ,不实例化对象。

vc 为 nil,nil 可以接受任何消息,因此不会导致崩溃。


ExerciseViewController *vc = [[ExerciseViewController alloc] init];

也不会像 Storyboard中的设计那样创建 View Controller ,您必须从 Storyboard实例化。


创建vc 对象后,您必须将其显示在屏幕上。即,将其推送到 View Controller 以呈现它。您会发现大量示例代码。你只需要搜索它。另外,您似乎没有在 https://developer.apple.com 上投入太多时间.看看他们的指南。现在!

关于ios - 从另一个类 Objective-C 调用时方法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34886439/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com