草庐IT

ios - 尝试设置文本字段的委托(delegate)时发生崩溃

coder 2024-01-19 原文

我有很多文本字段,我想让它们做的是在使用返回键时关闭。为了使其工作,您需要将每个文本字段的委托(delegate)设置为 self ,就像这样 [textfield setDelegate: self];。我的项目中有 50 多个文本字段,为了让它们全部消失,我必须为每个文本字段复制该行代码。在下面的示例中,我使用了一个 for 循环来尝试缩小它,但是我的项目崩溃了,并且在我尝试时出现了这个错误。谁能告诉我我做错了什么以及我该如何解决这个问题?

 //.h 
    @interface InsertScheduleCGPS : UIViewController <UITextFieldDelegate>{
        NSArray *Dayh;
        IBOutlet UITextField *Day11;
    }
    @property(nonatomic, assign) id<UITextFieldDelegate> delegate;
    @property (nonatomic,strong) NSArray *Dayh;

.

//.m
- (void)viewDidLoad
{

    [super viewDidLoad];

    Dayh = [NSArray arrayWithObjects:@"Day11", nil];

    NSLog(@"euf");

    for(int i=0; i<[self.Dayh count]; i++) {
      NSLog(@"dd%@",[self.Dayh objectAtIndex:i]);
       [[self.Dayh objectAtIndex:i] setDelegate: self];
}




 - (BOOL)textFieldShouldReturn:(UITextField *)Day11 {
        [[self view] endEditing:YES];



        return NO;
    }

错误:

    2014-01-18 19:15:26.712 Swepple[64912:70b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFConstantString setDelegate:]: unrecognized selector sent to instance 0x144ec'
*** First throw call stack:
(
    0   CoreFoundation                      0x0183b5e4 __exceptionPreprocess + 180
    1   libobjc.A.dylib                     0x015be8b6 objc_exception_throw + 44
    2   CoreFoundation                      0x018d8903 -[NSObject(NSObject) doesNotRecognizeSelector:] + 275
    3   CoreFoundation                      0x0182b90b ___forwarding___ + 1019
    4   CoreFoundation                      0x0182b4ee _CF_forwarding_prep_0 + 14
    5   Swepple                             0x0000bbd6 -[InsertScheduleCGPS viewDidLoad] + 4262
    6   UIKit                               0x00440318 -[UIViewController loadViewIfRequired] + 696
    7   UIKit                               0x004405b4 -[UIViewController view] + 35
    8   UIKit                               0x0044f361 -[UIViewController viewControllerForRotation] + 63
    9   UIKit                               0x00446f00 -[UIViewController _visibleView] + 84
    10  UIKit                               0x006d511a -[UIWindowController transition:fromViewController:toViewController:target:didEndSelector:animation:] + 5199
    11  UIKit                               0x0044c0fc -[UIViewController presentViewController:withTransition:completion:] + 6433
    12  UIKit                               0x0044c61f -[UIViewController presentViewController:animated:completion:] + 130
    13  UIKit                               0x0044c65f -[UIViewController presentModalViewController:animated:] + 56
    14  UIKit                               0x00870e16 -[UIStoryboardModalSegue perform] + 271
    15  UIKit                               0x0086107e -[UIStoryboardSegueTemplate _perform:] + 174
    16  UIKit                               0x00442280 -[UIViewController performSegueWithIdentifier:sender:] + 72
    17  Swepple                             0x000052d4 -[SecondViewController insert:] + 244
    18  libobjc.A.dylib                     0x015d0874 -[NSObject performSelector:withObject:withObject:] + 77
    19  UIKit                               0x0032e0c2 -[UIApplication sendAction:to:from:forEvent:] + 108
    20  UIKit                               0x0032e04e -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 61
    21  UIKit                               0x004260c1 -[UIControl sendAction:to:forEvent:] + 66
    22  UIKit                               0x00426484 -[UIControl _sendActionsForEvents:withEvent:] + 577
    23  UIKit                               0x00425733 -[UIControl touchesEnded:withEvent:] + 641
    24  UIKit                               0x0036b51d -[UIWindow _sendTouchesForEvent:] + 852
    25  UIKit                               0x0036c184 -[UIWindow sendEvent:] + 1232
    26  UIKit                               0x0033fe86 -[UIApplication sendEvent:] + 242
    27  UIKit                               0x0032a18f _UIApplicationHandleEventQueue + 11421
    28  CoreFoundation                      0x017c483f __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15
    29  CoreFoundation                      0x017c41cb __CFRunLoopDoSources0 + 235
    30  CoreFoundation                      0x017e129e __CFRunLoopRun + 910
    31  CoreFoundation                      0x017e0ac3 CFRunLoopRunSpecific + 467
    32  CoreFoundation                      0x017e08db CFRunLoopRunInMode + 123
    33  GraphicsServices                    0x037e09e2 GSEventRunModal + 192
    34  GraphicsServices                    0x037e0809 GSEventRun + 104
    35  UIKit                               0x0032cd3b UIApplicationMain + 1225
    36  Swepple                             0x0000e04d main + 141
    37  libdyld.dylib                       0x01d7c70d start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb) 

最佳答案

你可能是说

Dayh = [NSArray arrayWithObjects:Day11, nil];

目前,Dayh 是一个包含字符串“Day11”的数组,而不是文本字段

关于ios - 尝试设置文本字段的委托(delegate)时发生崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21211727/

有关ios - 尝试设置文本字段的委托(delegate)时发生崩溃的更多相关文章

  1. ruby - ECONNRESET (Whois::ConnectionError) - 尝试在 Ruby 中查询 Whois 时出错 - 2

    我正在用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.

  2. ruby - 使用 ruby​​ 将 HTML 转换为纯文本并维护结构/格式 - 2

    我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h

  3. ruby - 检查 "command"的输出应该包含 NilClass 的意外崩溃 - 2

    为了将Cucumber用于命令行脚本,我按照提供的说明安装了arubagem。它在我的Gemfile中,我可以验证是否安装了正确的版本并且我已经包含了require'aruba/cucumber'在'features/env.rb'中为了确保它能正常工作,我写了以下场景:@announceScenario:Testingcucumber/arubaGivenablankslateThentheoutputfrom"ls-la"shouldcontain"drw"假设事情应该失败。它确实失败了,但失败的原因是错误的:@announceScenario:Testingcucumber/ar

  4. ruby-on-rails - 如何验证非模型(甚至非对象)字段 - 2

    我有一个表单,其中有很多字段取自数组(而不是模型或对象)。我如何验证这些字段的存在?solve_problem_pathdo|f|%>... 最佳答案 创建一个简单的类来包装请求参数并使用ActiveModel::Validations。#definedsomewhere,atthesimplest:require'ostruct'classSolvetrue#youcouldevencheckthesolutionwithavalidatorvalidatedoerrors.add(:base,"WRONG!!!")unlesss

  5. ruby-on-rails - form_for 中不在模型中的自定义字段 - 2

    我想向我的Controller传递一个参数,它是一个简单的复选框,但我不知道如何在模型的form_for中引入它,这是我的观点:{:id=>'go_finance'}do|f|%>Transferirde:para:Entrada:"input",:placeholder=>"Quantofoiganho?"%>Saída:"output",:placeholder=>"Quantofoigasto?"%>Nota:我想做一个额外的复选框,但我该怎么做,模型中没有一个对象,而是一个要检查的对象,以便在Controller中创建一个ifelse,如果没有检查,请帮助我,非常感谢,谢谢

  6. Ruby Readline 在向上箭头上使控制台崩溃 - 2

    当我在Rails控制台中按向上或向左箭头时,出现此错误:irb(main):001:0>/Users/me/.rvm/gems/ruby-2.0.0-p247/gems/rb-readline-0.4.2/lib/rbreadline.rb:4269:in`blockin_rl_dispatch_subseq':invalidbytesequenceinUTF-8(ArgumentError)我使用rvm来管理我的ruby​​安装。我正在使用=>ruby-2.0.0-p247[x86_64]我使用bundle来管理我的gem,并且我有rb-readline(0.4.2)(人们推荐的最少

  7. ruby-on-rails - 在 Rails 和 ActiveRecord 中查询时忽略某些字段 - 2

    我知道我可以指定某些字段来使用pluck查询数据库。ids=Item.where('due_at但是我想知道,是否有一种方法可以指定我想避免从数据库查询的某些字段。某种反拔?posts=Post.where(published:true).do_not_lookup(:enormous_field) 最佳答案 Model#attribute_names应该返回列/属性数组。您可以排除其中一些并传递给pluck或select方法。像这样:posts=Post.where(published:true).select(Post.attr

  8. ruby - 如何验证 IO.copy_stream 是否成功 - 2

    这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下

  9. ruby-on-rails - 每次我尝试部署时,我都会得到 - (gcloud.preview.app.deploy) 错误响应 : [4] DEADLINE_EXCEEDED - 2

    我是Google云的新手,我正在尝试对其进行首次部署。我的第一个部署是RubyonRails项目。我基本上是在关注thisguideinthegoogleclouddocumentation.唯一的区别是我使用的是我自己的项目,而不是他们提供的“helloworld”项目。这是我的app.yaml文件runtime:customvm:trueentrypoint:bundleexecrackup-p8080-Eproductionconfig.ruresources:cpu:0.5memory_gb:1.3disk_size_gb:10当我转到我的项目目录并运行gcloudprevie

  10. Ruby 文件 IO 定界符? - 2

    我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的

随机推荐