在视图iphone之间传递文本字段的值

时间:2012-04-03 15:25:15

标签: iphone ios5

感谢帮助新手。我正在尝试使用SecondViewController.xib中的文本字段的值来设置WebService.m中的设置字符串。我已经包含了我的代码。当我执行应用程序时,来自WebService的NSLog给我一个输出“测试IP是:( null)”来自SecondViewController.m的NSLog是文本字段的值。你如何正确地将strIP传递给WebService.m?使用示例代码非常有用。

SecondViewController.h:

@interface SecondViewController : UIViewController

{
UITextField *ipAdd;

NSString *strIP;

}
@property (nontoxic, retain) IBOutlet UITextField *ipAdd;

@property (nonatomic, retain) NSString *strIP;


-(IBAction)textchanged:(id)sender;

+(SecondViewController*)sharedIP;

SecondViewController.m:

-(IBAction)textchanged:(id)sender
{

strIP = ipAdd.text;
NSLog(@"the string in the text field is: %@", strIP);

}

+(SecondViewController*)sharedIP
{
static SecondViewController *sharedIP = nil;
static dispatch_once_t onceToken;

dispatch_once(&onceToken, ^{
    sharedIP = [[SecondViewController  alloc] init];
        });
return sharedIP;
}

WebService.m:

SecondViewController *IP = [SecondViewController sharedIP] ;
NSLog(@"The test IP is:  %@", IP.strIP);

2 个答案:

答案 0 :(得分:1)

如果要修改块中的值,则需要在变量类型(sharedIP)上使用__block类型说明符,因此块中的修改会影响块外的值。

另外:每次调用+ sharedIP时,都会将static的值设置为nil,并且只在第一次重置时才会重置。你的设计看起来有点奇怪......我不确定为什么你会想要一个视图控制器的静态实例,但我不知道你在追求什么。如果您只想要持久性数据,请参阅NSUserDefaults(这很酷,因为它会在重新启动时持续存在)。最好创建一个数据容器的静态实例来保存字符串值。

祝你好运。

答案 1 :(得分:0)

  1. 检查应该是SecondViewController的textField的委托。
  2. 在返回之前尝试打印相同的值。例如:

    +(SecondViewController *)sharedIP {     static SecondViewController * sharedIP = nil;     static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{
    sharedIP = [[SecondViewController  alloc] init];
    });
    
    **NSLog(@"The test IP is:  %@", sharedIP.strIP);**
    
    return sharedIP;
    

    }

  3. 可能会有帮助

    干杯