iOS 7,UIView 子视图为零
Posted
技术标签:
【中文标题】iOS 7,UIView 子视图为零【英文标题】:iOS 7, UIView subviews is nil 【发布时间】:2013-10-01 06:46:42 【问题描述】:为什么在 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 提供的视图控制器的视图层次结构中播放是一个非常糟糕的主意。他们可以并且确实在逐个版本的基础上进行更改。
【参考方案1】:
iOS 7 层次结构发生了很大变化。例如,Apple 用表格视图和表格视图单元格替换了许多 UIButton
s。
您确定层次结构中确实有一个按钮吗?对于调试,您可以尝试调用
NSLog(@"%@", [tweetSheet.view recursiveDescription]); // (ignore the warning)
查看视图层次结构的样子。
然而,在 iOS 7 中,Apple 开始有意阻止对系统视图的访问(例如UIAlertView
)。有时是因为安全,有时是因为自己的原因。这意味着您可能根本无法访问该按钮。
您不应该访问该按钮。
【讨论】:
谢谢,这对 Apple 来说是正确的方式。还有,我如何通过其他方式实现 AutoPost 推特帖子? @CReaTuS 明确禁止在 twitter/fb/etc 上自动发帖。这就是苹果试图阻止所有人访问这些视图的原因。 recursiveDescription 返回一个 1 UIVIew,看来,这是一个 Tweet UIView以上是关于iOS 7,UIView 子视图为零的主要内容,如果未能解决你的问题,请参考以下文章
在 iOS 7 SDK 中关闭 UIAlertview 后 UIView 没有响应
ViewController 的子视图的 IBOutlets 在 Storyboard 的 viewDidLoad 中为零