Moe*_*Moe 7 iphone xcode objective-c ios
我一直在阅读很多关于SO的手势识别器 - 并且设法编写了一个工作代码,当在UIImage上识别出长按时,会出现一个操作表:
{ ...
UILongPressGestureRecognizer *longPressWall = [[[UILongPressGestureRecognizer alloc]
initWithTarget:self action:@selector(deleteImage:)] autorelease];
longPressWall.minimumPressDuration = 0.4;
l.userInteractionEnabled=YES;
[l addGestureRecognizer:longPressWall];
... }
-(void)deleteImage:(UILongPressGestureRecognizer*)sender {
if(UIGestureRecognizerStateBegan == sender.state) {
UIActionSheet *as = [[UIActionSheet alloc] initWithTitle:@"" delegate:self cancelButtonTitle:@"Close" destructiveButtonTitle:@"Delete Screenshot" otherButtonTitles: nil];
[as showInView:masterView];
[as release];
}
}
Run Code Online (Sandbox Code Playgroud)
因此,deleteImage:
在这种情况下,向Selector发送信息有点棘手.我想在调用deleteImage时向服务器发送HTTP请求,因此我需要从视图中获取一些信息.
反正是否存储信息UIImageView
并从中检索sender.view.myinfo
(例如)?
谢谢!
nie*_*bot 20
通过扩展,您可以添加属性UIView
来存储关联的值,如下所示:
import Foundation
import ObjectiveC
extension UIImageView
{
struct Static {
static var key = "key"
}
var myInfo:AnyObject? {
get {
return objc_getAssociatedObject( self, &Static.key ) as AnyObject?
}
set {
objc_setAssociatedObject( self, &Static.key, newValue, .OBJC_ASSOCIATION_RETAIN)
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在您可以在代码中的任何位置执行此操作
let anImageView = UIView()
// set your new property on any UIView:
anImageView.myInfo = <some object>
// get your proeprty from any UIView
myImage = anImageView.myInfo
Run Code Online (Sandbox Code Playgroud)
以前的答案(相同的代码,但在Objective-C),
检查出objc_setAssociatedObject()
的<objc/runtime.h>
我会把它作为一个类别实现..(ARC风格)
#import <objc/runtime.h>
@interface UIImageView (MyInfo)
@property ( nonatomic, strong ) id myInfo ;
@end
@implementation UIImageView (MyInfo)
-(void)setMyInfo:(id)info
{
objc_setAssociatedObject( self, "_myInfo", info, OBJC_ASSOCIATION_RETAIN_NONATOMIC ) ;
}
-(id)myInfo
{
return objc_getAssociatedObject( self, "_myInfo" ) ;
}
@end
Run Code Online (Sandbox Code Playgroud)
现在你可以这样做:
UIImage * myImage ;
myImage.myInfo = <some object>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4079 次 |
最近记录: |