无法将UITextField的内容从一个控制器传递到另一个控制器

时间:2014-07-05 18:16:29

标签: ios objective-c segue

我想将用户输入的任何字符串传递给从NSString`分配给UITextField的UITextField' over to the destination view controller, but when I NSLog the value in the destination, it shows up as null. I'm also getting a warning stating:不兼容的指针类型。我如何正确地完成作业并将其发送出去?

原始视图控制器

SearchViewController.m:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    controller.itemSearch = self.itemSearch.text;
}

SearchViewController.h:

@property (weak, nonatomic) IBOutlet UITextField *itemSearch;

目标视图控制器

UserCategoryChooserViewController.h:

#import <UIKit/UIKit.h>
#import "SearchViewController.h"

@interface UserCategoryChooserViewController : UIViewController

@property (weak, nonatomic) IBOutlet UITextField *itemSearch;

UserCategoryChooserViewController.m:

NSLog(@"The text is:'%@'", self.itemSearch.text); // results in (null)

3 个答案:

答案 0 :(得分:1)

controller.itemSearch是一个UITextField *,你试图将它设置为NSString *,这是警告的用途。要设置UITextField的文本,请尝试以下操作:

[controller.itemSearch setText:self.itemSearch.text];

可能还有其他问题,但让我们从这里开始。

答案 1 :(得分:1)

让我们来看看你看到的错误。它表示您要为NSString *分配UITextField *。不幸的是,你做不到。在这里,itemSearch是文本字段。

要使代码正常运行,您需要设置text文本字段的itemSearch属性。正确的代码是:

controller.itemSearch.text = self.itemSearch.text;

作为旁注,除非你已经建立了一个坚实的基础,否则你应该真的不干涉iOS开发。

答案 2 :(得分:1)

以上两个答案也是正确的。但是如果你想正确地进行赋值,那么将textfield变量修改为NSString变量,如下所示:

 @interface UserCategoryChooserViewController:UIViewController
 @property (strong, nonatomic) NSString *itemSearch;

这样做之后你的警告 从UITextField分配给NSString的不兼容指针类型将被删除