我有一组以编程方式生成的图像。在每张图片上,我都添加了一个点击手势。我想要发生的事情是,当点击该图像时,边框会变黑。
目前,我正在尝试将参数传递给该方法,然后该方法将在数组列表中找到图像。不过,我正在努力寻找正确的语法来传递该参数
这是代码。感谢您的帮助!
- (void)viewDidLoad
{
[super viewDidLoad];
int recents = 10;
int x = 10;
_recent.contentSize = CGSizeMake((x*120)+10,100 );
for(int i = 0; i <=recents; i ++){
_imageView = [[UIImageView alloc] initWithFrame:CGRectMake(x, 10, 90, 90)];
[_arrayImages addObject:_imageView];
NSURL *url = [NSURL URLWithString:@"http://www.vetprofessionals.com/catprofessional/images/home-cat.jpg"];
NSData *data = [NSData dataWithContentsOfURL:url];
_imageView.image = [[UIImage alloc] initWithData:data];
_imageView.layer.masksToBounds = YES;
_imageView.layer.cornerRadius = 45.0;
_imageView.layer.borderColor = [UIColor blueColor].CGColor;
_imageView.layer.borderWidth = 3.0f;
_imageView.layer.rasterizationScale = [UIScreen mainScreen].scale;
_imageView.layer.shouldRasterize = YES;
NSUInteger * count;
_imageView.tag = i;
UITapGestureRecognizer *tapGesture =
[[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(didTapImageWithGesture:)];
tapGesture.numberOfTapsRequired = 1;
[_imageView addGestureRecognizer:tapGesture];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(x, 110, 90, 24)];
label.text = @"Sam Stone";
label.font = [UIFont fontWithName:@"HelveticaNeue" size:12];
label.backgroundColor = [UIColor clearColor];
label.textColor = [UIColor colorWithRed:62/255.0f green:68/255.0f blue:75/255.0f alpha:1.0f];
label.textAlignment = NSTextAlignmentCenter;
[_recent addSubview:_imageView];
[_recent addSubview:label];
[_arrayImages addObject:_imageView];
x=x+110;
}
}
- (void)didTapImageWithGesture:(id)sender {
UIImageView *image;
image = [_arrayImages objectAtIndex:((UIGestureRecognizer *)sender).view.tag];
image.layer.borderColor = [UIColor blackColor].CGColor;
}
最佳答案
我可能遗漏了一些东西,但这应该更简单。我们有 N 个 ImageView 和 N 个手势识别器,每个都附加一个。手势识别器的方法签名是这样的:
- (void)didTapImageWithGesture:(UIGestureRecognizer *)gr {
// want the view?
UIImageView *imageView = (UIImageView *)gr.view;
// want the image?
UIImage *image = imageView.image;
// want the index of the imageView in the array?
// not sure why you'd want this. all it tells you is the z-order
NSInteger index = [_arrayImages indexOfObject:imageView];
// want the view again?
UIImageView *imageViewAgain = _arrayImages[index];
// but why? you already have the view
// does
if (imageViewAgain == imageView) // of course it's true!
}
请注意,我们根本不需要引用标签或点击的位置。现在,如果我们标记了 View 。我们也可以说:
NSInteger tag = gr.view.tag;
UIImageView *imageViewAgainAgain = _arrayImages[tag];
或者我们可以说:
UIImageView *imageViewAgainAgainAgain = [gr.view.superview viewWithTag:tag];
但同样,这就像从一个狡猾的巴黎出租车司机那里搭便车,让你在拜占庭的圈子里转来转去,只需要按计程表就可以了。
关于ios - 尝试将参数传递给点击手势的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23985935/
我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div
总的来说,我对ruby还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用
类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc
我正在尝试设置一个puppet节点,但rubygems似乎不正常。如果我通过它自己的二进制文件(/usr/lib/ruby/gems/1.8/gems/facter-1.5.8/bin/facter)在cli上运行facter,它工作正常,但如果我通过由rubygems(/usr/bin/facter)安装的二进制文件,它抛出:/usr/lib/ruby/1.8/facter/uptime.rb:11:undefinedmethod`get_uptime'forFacter::Util::Uptime:Module(NoMethodError)from/usr/lib/ruby
我正在用Ruby编写一个简单的程序来检查域列表是否被占用。基本上它循环遍历列表,并使用以下函数进行检查。require'rubygems'require'whois'defcheck_domain(domain)c=Whois::Client.newc.query("google.com").available?end程序不断出错(即使我在google.com中进行硬编码),并打印以下消息。鉴于该程序非常简单,我已经没有什么想法了-有什么建议吗?/Library/Ruby/Gems/1.8/gems/whois-2.0.2/lib/whois/server/adapters/base.
我想了解Ruby方法methods()是如何工作的。我尝试使用“ruby方法”在Google上搜索,但这不是我需要的。我也看过ruby-doc.org,但我没有找到这种方法。你能详细解释一下它是如何工作的或者给我一个链接吗?更新我用methods()方法做了实验,得到了这样的结果:'labrat'代码classFirstdeffirst_instance_mymethodenddefself.first_class_mymethodendendclassSecond使用类#returnsavailablemethodslistforclassandancestorsputsSeco
我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer
exe应该在我打开页面时运行。异步进程需要运行。有什么方法可以在ruby中使用两个参数异步运行exe吗?我已经尝试过ruby命令-system()、exec()但它正在等待过程完成。我需要用参数启动exe,无需等待进程完成是否有任何rubygems会支持我的问题? 最佳答案 您可以使用Process.spawn和Process.wait2:pid=Process.spawn'your.exe','--option'#Later...pid,status=Process.wait2pid您的程序将作为解释器的子进程执行。除
设置:狂欢ruby1.9.2高线(1.6.13)描述:我已经相当习惯在其他一些项目中使用highline,但已经有几个月没有使用它了。现在,在Ruby1.9.2上全新安装时,它似乎不允许在同一行回答提示。所以以前我会看到类似的东西:require"highline/import"ask"Whatisyourfavoritecolor?"并得到:Whatisyourfavoritecolor?|现在我看到类似的东西:Whatisyourfavoritecolor?|竖线(|)符号是我的终端光标。知道为什么会发生这种变化吗? 最佳答案
我有一些Ruby代码,如下所示:Something.createdo|x|x.foo=barend我想编写一个测试,它使用double代替block参数x,这样我就可以调用:x_double.should_receive(:foo).with("whatever").这可能吗? 最佳答案 specify'something'dox=doublex.should_receive(:foo=).with("whatever")Something.should_receive(:create).and_yield(x)#callthere