0

我必须将 UITextField 值从一个视图传递到其他视图(第二个、第三个...视图)。实际上,在我的第三个 ViewController 中,我有一个滚动视图,我必须在其上显示值。但是 UITextField 值没有被传递。它正在返回 null。不知道可能出了什么问题?这是我正在使用的代码:

In ViewController1.m:

-(IBAction)butonclick:(id)sender{
ViewController2 *view2=[ViewController2 alloc];
view2.id=name.text; 
ViewController3 *view3=[ViewController3 alloc];
view3.id=name.text; 
[view2 release];
[view3 release];
}


IN ViewConroller2.h :
@interface ViewController2 : UIViewController { 
   NSString *id;
   UIlabel *displayId;
}

In ViewController2.m :
- (void)viewDidLoad
{
 self.displayId.text=self.id;
}

In ViewController3.h:
@interface ViewController2 : UIViewController { 
  NSString *id;
  UIlabel *dispId;
 }  

In ViewController3.m :
- (void)viewDidLoad
{
self.dispId.text=self.id;
}

但是这里的 id 值没有传递给 ViewController3。它返回 null ..我哪里出错了?

4

3 回答 3

0

我只是在更正您编写的代码,同时上面给出的使用 AppDelegate 属性的建议是一个很好的建议。您的代码的主要问题是您只是声明 NSString 对象而不是使其成为属性。检查这个:

-(IBAction)butonclick:(id)sender{
ViewController2 *view2=[ViewController2 alloc]init];
view2.str=name.text; 
ViewController3 *view3=[ViewController3 alloc]init;
view3.str=name.text; 
[view2 release];
[view3 release];
}


IN ViewConroller2.h :
@interface ViewController2 : UIViewController { 
   NSString *str;
   UIlabel *displayId;
}
@property(nonatomic, retain) NSString* str; //Synthesize it in .m file

In ViewController2.m :
- (void)viewDidLoad
{
 self.displayId.text=self.str;
}

In ViewController3.h:
@interface ViewController2 : UIViewController { 
  NSString *str;
  UIlabel *dispId;
 }  
    @property(nonatomic, retain) NSString* str; //Synthesize it in .m file

In ViewController3.m :
- (void)viewDidLoad
{
self.dispId.text=self.str;
}

我不知道您的情况,但实现这种情况的最有效方法是使用Delegates。为设置字符串的类(ViewController1)创建一个委托,并在其他视图控制器中相应地设置委托。

于 2012-10-15T14:20:27.173 回答
0

您正在传递值而不进行初始化。

ViewController2 *view2=[[ViewController2 alloc]init];
view2.id=name.text; 
ViewController3 *view3=[[ViewController3 alloc]init];
view3.id=name.text; 

如果你想在你的应用程序中全局使用对象,你可以在 appDelegate 中声明它。

在 AppDelegate.h

 @interface AppDelegate : NSObject <NSApplicationDelegate>
    {
         NSString *idGlobal;
    }
    @property (nonatomic, retain) NSString *idGlobal;

AppDelegate.m

@synthesize idGlobal;

In ViewController1.m:

-(IBAction)butonclick:(id)sender{

     appDelegate.idGlobal=name.text; 
}

In ViewController2.m: and
In ViewController3.m:
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
id=appDelegate.idGlobal;
于 2012-10-13T11:41:25.270 回答
0

在 this 中全局声明字符串AppDelegate.h将有助于在整个文件中保持字符串的值不变。同样,无论您要添加字符串或更改其值或分配它,都可以导入AppDelegate.h.

还要检查这些链接:-

将 NSString 从一个类传递到另一个类

将 NSString 从一个类传递到另一个类

于 2012-10-13T11:11:35.063 回答