【问题标题】:Adding View Controller's view to UIAlertView (Objective c)将 View Controller 的视图添加到 UIAlertView(目标 c)
【发布时间】:2014-03-11 11:40:21
【问题描述】:

我有ViewControllerUITableView。如果我触摸任何Cell,它会在另一个视图中显示有关此Cell 的信息。它运作良好。但是,当我将MyViewControllerview 添加到UIAlerView 的视图中时,如果我触摸AlertView,则会出现运行时错误。 这是我的代码:

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Title" message:@"" delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
MyViewController *VC = [[MyViewController alloc] init];
[alert setValue:VC.view forKey:@"accessoryView"];
[alert show];

任何帮助请... 我的程序显示如下:

【问题讨论】:

  • 这是什么[alert setValue:VC.view forKey:@"accessoryView"];UIAlertView 不提供该方法
  • @Himanshu Joshi,此方法在iOS7中用于任何子视图到alertView。例如,参见stackoverflow.com/a/21067447/2066428
  • 我看到了,但对这个问题没有帮助
  • 只是想知道你是否知道关于不继承或更改UIAlertView 的视图层次结构的规则???请标记为"Subclassing note" 的部分了解此详细信息developer.apple.com/library/ios/documentation/uikit/reference/… 所以你不应该真的搞砸这个。如果 Apple 想要你或允许你玩这个,他们会为这样的东西提供一个属性,就像 setAccessoryView: 一样。这很可能会导致您的应用被拒绝。
  • 你是怎么把附件视图框设置得这么大的??我将 accessoryView 值设置为 UIView 但它没有显示那么大,它被剪切了..

标签: ios objective-c uialertview


【解决方案1】:

警报视图仅显示在屏幕上。当前可见哪个视图控制器无关紧要,当调用show 方法时,将警报视图添加为顶视图。

就视图控制器而言,唯一重要的是您想要哪个作为委托视图控制器,它可以分配给除 self 以外的对象。

重构您的代码,使其如下所示:

MyViewController *VC = [[MyViewController alloc] init];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Title" message:@"" delegate:VC cancelButtonTitle:@"OK" otherButtonTitles: nil];
[alert show];

注意您要显示的VC 现在如何成为警报的委托人?

【讨论】:

  • 如果我将代码更改为这样,它不会显示我的 ViewControllerview
  • 此代码不会推送视图控制器。您的原始代码也没有。
猜你喜欢
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多