【问题标题】:iOS 7, UIView subviews is niliOS 7,UIView 子视图为零
【发布时间】:2023-03-12 01:53:01
【问题描述】:

为什么在 iOS 7 [UIView subviews] 中总是返回 nil ?

我正在使用这个code,但已经获得了一个nil

iOS 7 中的错误?

已编辑:

TWTweetComposeViewController* tweetSheet = [[TWTweetComposeViewController alloc]  init];
[tweetSheet setInitialText: twitter_descrp];
[tweetSheet addURL:[NSURL URLWithString: twitter_link]];

NSData* imageData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString: twitter_img]];
UIImage* uiImage = [UIImage imageWithData:imageData];
[tweetSheet addImage:uiImage];

NSLog(@"subviews: %@", [tweetSheet.view firstSubviewOfClass:[UIButton class]] );

这里的 firstSubviewOfClass 来自iOS7 Subviews Hierarchy

在 NSLog 中返回这个:

subviews: (
)

【问题讨论】:

  • 它没有。你是如何创造你的观点的?你能显示一些代码吗?
  • 能否将您的代码添加到问题中?外部链接可能会失效。
  • @Fogmeister,问题已编辑
  • 你怎么知道TWTweetComposeViewController上面有UIButtons?难道他们不使用UIButton?您在这里展示的只是它没有任何按钮。请改用[UIView class]
  • 在 Apple 提供的视图控制器的视图层次结构中播放是一个非常糟糕的主意。他们可以并且确实在逐个版本的基础上进行更改。

标签: ios uiview ios7


【解决方案1】:

iOS 7 层次结构发生了很大变化。例如,Apple 用表格视图和表格视图单元格替换了许多 UIButtons。

您确定层次结构中确实有一个按钮吗?对于调试,您可以尝试调用

NSLog(@"%@", [tweetSheet.view recursiveDescription]); // (ignore the warning)

查看视图层次结构的样子。

然而,在 iOS 7 中,Apple 开始有意阻止对系统视图的访问(例如UIAlertView)。有时是因为安全,有时是因为自己的原因。这意味着您可能根本无法访问该按钮。

不应该访问该按钮。

【讨论】:

  • 谢谢,这对 Apple 来说是正确的方式。还有,我如何通过其他方式实现 AutoPost 推特帖子?
  • @CReaTuS 明确禁止在 twitter/fb/etc 上自动发帖。这就是苹果试图阻止所有人访问这些视图的原因。
  • recursiveDescription 返回一个 1 UIVIew,看来,这是一个 Tweet UIView
猜你喜欢
  • 1970-01-01
  • 2012-01-24
  • 1970-01-01
  • 2021-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多