iphone - 如何将 userInfo 添加到 UIAlertView?

标签 iphone objective-c nsdictionary uialertview userinfo

我想知道如何将 userInfo 对象或任何 NSDictionary 添加到 UIAlertView?

谢谢。

最佳答案

您可以尝试对 UIAlertView 进行子类化以添加该字段,或者改为在您的委托(delegate)类中存储一个引用。但将任何对象附加到任何其他对象的最通用方法是使用 objc_setAssociatedObject .

为此,您必须 #import <objc/runtime.h> ,你需要一个任意的 void *用作键(通常的技巧是在 .m 文件中声明 static char fooKey; 并使用其地址)。然后你可以像这样附加对象:

objc_setAssociatedObject(alertView, &fooKey, myDictionary, OBJC_ASSOCIATION_RETAIN);

在这种情况下,myDictionary 将在 alertView 的生命周期内保留,并在 alertView 被释放时释放。

稍后要检索关联对象,请使用逻辑命名的 objc_getAssociatedObject .

NSDictionary *myDictionary = objc_getAssociatedObject(alertView, &fooKey);

它返回 nil如果没有关联集。要打破关联,只需使用 objc_setAssociatedObject为同一个对象和键关联一个新值; nil可用于在不关联新对象的情况下中断关联。

列出了除 OBJC_ASSOCIATION_RETAIN 之外的关联类型的其他值 here .

关于iphone - 如何将 userInfo 添加到 UIAlertView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5279884/

相关文章:

ios - Objective-C,NSTask缓冲区限制

ios - 自定义 UITableViewCell 的 UI 问题

iphone - 创建自定义 UIActivityIndi​​catorView

ios - 来自NSDictionary的Objective-C字符

ios - 访问 NSMutableDictionary 的一个特定元素在 iOS 中获取空值

iphone - 如何找到 MKMapView 当前的缩放级别?

iphone - 使用 Core Data 中的 id 获取

ios - 从服务器上的特定嵌套核心数据实体上传图像的通用且简单的方法?

ios - 当应用程序在后台运行在模拟器上但不在设备上运行时更新位置(iOS 9)

iphone - 在具有安全文本输入的 UITextField 上忽略 UIKeyboardTypeNumbersAndPunctuation