• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 将 ScrollView 委托(delegate)传递给 subview Controller

[复制链接]
菜鸟教程小白 发表于 2022-12-13 03:50:54 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我似乎无法弄清楚如何将 ScrollView 的委托(delegate)设置为 ScrollView 中的 View Controller 。

ChildView *child = [[ChildView alloc] init];

_scrollview.delegate = child;

我的 subview Controller 正在使用 ScrollView 委托(delegate):

@interface ChildView : UIViewController <UIScrollViewDelegate>

但它不会调用scrollViewDidScroll;

- (void)scrollViewDidScrollUIScrollView *)scrollView {
NSLog(@"%f", scrollView.contentOffset.y);
}

基本上,我希望将 ScrollView 的 ScrollView 偏移量传递给嵌套在其中的 View Controller 。



Best Answer-推荐答案


您可以通过多种方式在 Objective C 中分配属性。

  1. Assign 表示简单地执行变量赋值并将一个变量设置为另一个变量。如果变量超出范围,您将无法使用该变量。这通常仅用于 C 原语。
  2. Weak 告诉编译器保持对该对象的引用,只要其他人强烈指向它。
  3. Strong 告诉编译器保持对给定对象的强引用。这意味着在持有它的对象超出范围之前,该对象不会超出范围。

正如@Aaron 所指出的,委托(delegate)属性是使用assign 设置的。这意味着如果您设置委托(delegate)的变量超出范围,则引用将变为无效。为了解决这个问题,你必须保持一个指向对象的强指针,这样它就不会超出范围。

为此,请在主视图 Controller 中创建一个属性:

@property (strong, nonatomic) ChildView * child;

然后,当您创建 subview 时,将属性设置为等于它。

self.child = ChildView *child = [[ChildView alloc] init];

现在您可以设置委托(delegate),一旦您的函数终止,它就不会超出范围。

_scrollview.delegate = self.child;

关于ios - 将 ScrollView 委托(delegate)传递给 subview Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18425074/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap