我想将用户输入的任何字符串传递给从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)
答案 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
的不兼容指针类型将被删除