【问题标题】:how to pass value from one page to another?如何将值从一页传递到另一页?
【发布时间】:2011-10-18 06:14:04
【问题描述】:

我在第一个视图上有三个按钮。现在我在第二个视图中只有一个标签。

  • 通过单击第一个按钮,我得到了值 1。
  • 通过单击第二个按钮,我得到了值 2。
  • 通过单击第三个按钮,我得到了值 3。

现在我想在每次只打印一个值时在第二视图的标签上打印此值。

  • 当我按下第一个按钮然后删除标签值时,标签上只会打印 1。
  • 当我按下第二个按钮然后删除标签值时,标签上只会打印 2 个。
  • 当我按下第三个按钮然后删除标签值时,标签上只会打印 3 个。

#

【问题讨论】:

  • 你在另一个视图控制器类中有标签吗?

标签: iphone objective-c xcode


【解决方案1】:

删除值很容易,因为每次调用

[yourLabel setText:@"your value"]; 

您正在直接删除旧值。

现在,当我们谈论在视图之间移动信息时,这并不难,您可以使用例如应用程序委托

在应用程序委托.h文件中添加

{
   // app delegate declarations
   NSString *buttonValue;
}

@property (nonatomic, retain)NSString *buttonValue;

并在应用委托.m 文件中添加

@synethize buttonValue //on the top

现在你添加你的观点

#import YourAppDelegate.h

然后在代码中

MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];

并用

设置 buttonValue 的值
[appDelegate setButtonValue:@"value"];

现在,当您在第二个视图中时,只需读取值

MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];

[appDelegate buttonValue]

【讨论】:

  • 如果我在标签旁边输入文本,那么我将如何在文本中获取整数值
  • 您可以使用 [NSString intValue] 从字符串中读取值作为整数值,因此在您的情况下,您可以在应用程序委托中使用 int 而不是 NSString 但是您需要从 .h 文件中的属性中删除保留
【解决方案2】:

属性。这就是你需要的。

在您的第二视图中,为您的标签编写属性。 例如: 在你的 .h 文件中

@interface classname
{
   UILabel *myLabel;
}
@property(nonatomic,retain)  IBOutlet UILabel *myLabel;

然后在你的 .m

@implementation classname
@synthesize myLabel;

现在,由于您已经为 UILabel 编写了属性(getter 和 setter 方法),因此您只能在创建第二类对象的地方从第一类设置其值。

SecondClass *secondObj = [[SecondClass alloc]init];
secondObj.myLabel.text = buttonClicked; //buttonClicked is NSString set when corresponding button is clicked e.g:1,2,3 etc.

【讨论】:

  • 我认为将 UILabel 等作为属性是不好的设计,封装它们的类应该负责它们的更新,你应该将数据对象传递给类,然后它会更新它的标签。
  • 我同意@SimonLee.. 应该传递数据对象而不是设计元素。
猜你喜欢
  • 1970-01-01
  • 2017-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-28
  • 1970-01-01
相关资源
最近更新 更多