如何从视图控制器的 uitextfield 在类中设置 NSString

Posted

技术标签:

【中文标题】如何从视图控制器的 uitextfield 在类中设置 NSString【英文标题】:How to set a NSString in a class from a uitextfield from a viewcontroller 【发布时间】:2011-06-09 03:08:41 【问题描述】:

我想设置 NSString *receiveCodeText;那是在我的 viewcontroller 中的 viewcontroller 中具有 uitextfiled 值的对象中 tableView:didSelectRowAtIndexPath: 但是我收到错误

/用户/imac/文档/Iphone 应用程序/表/类/RootViewController.m:198:0 /Users/imac/Documents/Iphone 应用程序/表/类/RootViewController.m:198: 错误:访问未知 'setReceiveCodeText:' 类方法

/用户/imac/文档/Iphone 应用程序/表/类/RootViewController.m:198:0 /Users/imac/Documents/Iphone 应用程序/表/类/RootViewController.m:198: 错误:无法设置对象 - 要么 只读属性或未找到设置器

这是我的代码以及我尝试传递文本的方式。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

    searchTableViewController *searchTable = [[searchTableViewController alloc] initWithNibName:@"searchTableViewController" bundle:nil];

    switch (indexPath.row) 
        case 1: 
            searchTable.editedFieldName = @"Make";
            //Pass code number over to DBAccess class
            DBAccess.receiveCodeText = self.codeText.text;
         break;
        case 2: 
            searchTable.editedFieldName = @"Model";
         break;
        case 3: 
            searchTable.editedFieldName = @"Year";
         break;
    

    [self.navigationController pushViewController:searchTable animated:YES];
    [searchTable release];

【问题讨论】:

你不能在类上设置属性,你使用属性简写在DBAccess 上设置一个值(我假设是你的类?)类(不是类的实例),我'我对这甚至编译感到惊讶,是否有编译器警告?无论如何,我认为您想获得该类的一个实例。 你@synthesize 了吗? bshirley 这没有编译 :) 当我对我的 sqlquery 进行硬编码时,我一切正常,但我想在运行时设置它,因此这段代码 :) 我明白你的意思,现在意识到我试图向我的班级发送一个值而不是向我的班级发送一个值是多么愚蠢......现在唯一的事情是我不是确定什么时候可以将这个变量传递给我的类实例.. 我不确定你所说的定义是什么意思? 【参考方案1】:

DBAccess 是一个类。除非setRecieveCodeText:是类方法,否则不能直接使用。属性属于实例而不是类,因此您必须声明类方法并使用静态变量来处理它。但是,如果您想避免同一类的多个实例,则实例化然后使用该对象甚至使用单例是有意义的。单例应该可以跨类使用。

我已经包含了与类方法方法相关的代码。

@interface DBAccess: NSObject 


+ (NSString *)receiveCodeText;
+ (void)setReceiveCodeText:(NSString *)code;
[..]
@end

.m 文件中,

static NSString * receiveCodeText;

@implementation DBAccess
[..]
+ (NSString *)receiveCodeText 
    return receiveCodeText;


+ (void)setReceiveCodeText:(NSString *)code 
    [receiveCodeText autorelease];
    receiveCodeText = [code copy];

[..]
@end

【讨论】:

以上是关于如何从视图控制器的 uitextfield 在类中设置 NSString的主要内容,如果未能解决你的问题,请参考以下文章

Swift - 从 IBAction 按钮调用 SKAction(在类中)

如何保存uitextfield以使文本保持从视图控制器到视图控制器

为 UITextField 设置委托时应用程序崩溃

当 UITextField 被填充时,从一个类向视图控制器发送信号或触发函数

如何以编程方式在视图控制器之间传递数据?我想将我的UITextfield数据传递给另一个视图控制器[重复]

从主视图控制器访问模态视图控制器中的 UITextField 中的文本