gpt4 book ai didi

ios - 使用 Delegate 将变量传递回 ViewController 不起作用

转载 作者:行者123 更新时间:2023-12-01 18:57:59 26 4
gpt4 key购买 nike

我发现了如何将字符串值从 ViewController 传递回调用 ViewController 并让它完美运行的一个非常好的演练。这个例子真的很好。

https://www.youtube.com/watch?v=YVikeoR3gYg

也就是说,回传内容的技术在我看到它之后似乎相对简单,即使它不是那么直观。

然而,示例代码仅包含两个 Controller 。当我使用更详细的 Storyboard 复制代码时,代码根本不起作用。在我的测试应用程序中,我什至将调用 Controller 嵌入到 NavigationController 中,以查看这是否会产生影响,但它仍然可以正常工作。

在我的应用程序中,ViewController 嵌入在通过 SWRevealController segue 类调用的 NavigationController 中。我不知道这是否重要或相关,但我提到它。

然后我调用一个 CollectionViewController 来选择一个应该传回调用 ViewController 的图标。

当我选择图标时,我正确识别图标并弹出

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
selectedIcon = [placeIcons objectAtIndex:indexPath.row];
NSLog(@"In IconCollectionViewControlled - selected %@", selectedIcon);

NSString *itemToPassBack = @"12345"; // Just testing any old string here...

// [self.delegate passBackIcon:selectedIcon]; // commenting out while testing

[self.delegate passBackIcon:itemToPassBack];
[self.navigationController popViewControllerAnimated:YES];
}

我得到一个正确的跟踪,表明选择了正确的图标。然后我希望文本“12345”会被传递回调用 Controller 。

在我的调用 Controller 中,我有以下内容:
- (void)passBackIcon:(NSString *)iconName {
NSLog(@"Icon to use is %@", iconName);
}

但这根本没有被调用(或者至少我没有看到 NSLog 被显示。它只是被忽略了。

据我所知,委托(delegate)已正确声明。

我错过了什么吗?

最佳答案

假设您正在使用 segues,在方法 prepareSegue 中您应该设置委托(delegate)
例如 :

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"YOUR_SEGUE_IDENTIFIER"] ) {
DestinationVc *vc = (DestinationVc *)segue.destinationViewController;
[vc setDelegate:self];
}

}

希望对你有帮助

关于ios - 使用 Delegate 将变量传递回 ViewController 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25373097/

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