0

我需要制作一个按钮来在另一个页面上做某事。我知道如何编写一个按钮以在同一页面(相同的视图控制器)上制作想要的东西也使该按钮打开另一个页面(另一个视图控制器)但是我怎样才能同时制作它呢?

这是一个简单计算器的示例。

  • 打开程序
  • 输入两个数字
  • 点击按钮
  • SecondPage 出现并显示第一页的结果

是关于代表的事情吗?请解释。

我收到了一些答案,谢谢,让我们让它变得简单,让那个按钮在第二页的标签上写一些东西你能不能也写那个代码?它很简单,第一页的一个按钮会在第二页的标签上写一些东西页。第一个视图控制器名称是 ru1 第二个视图控制器名称是 ru2

你也能解释一下我在哪里写我是菜鸟,我很难理解你在说什么?

4

3 回答 3

1

您可以创建一个选择器来完成它...

[myButton addTarget:self action:@selector(mySelector) forControlEvents:UIControlEventTouchUpInside];

你的选择器

- (void)mySelector {
    myNewViewController *secondController = [[myNewViewController alloc] init];
    [secondController setMyProperty:@"SOME_VAR"];
    [self.navigationController pushViewController:secondController animated:YES];
}

在里面secondController.h

@property (nonatomic, strong) NSString *myProperty;

在里面secondController.m

@synthesize myProperty;

在您的第二个(ru2)控制器中-(void)viewDidLoad:

UILabel *lblSecond = [[UILabel alloc] initWithFrame:CGRect(10, 10, 20, 100)];
[lblSecond setText:myProperty];
[self.view addSubview:lblSecond];
于 2012-07-23T18:20:07.447 回答
0

如果在点击按钮时存在“其他”视图控制器(例如,它位于导航堆栈中的某个位置),您可以发布通知。“其他”视图控制器必须在初始化时执行此操作:

[[NSNotificationCenter defaultCenter] addObserver:self name:YourCustomNotificationName object:nil];

并且,在 dealloc 上:

[[NSNotificationCenter defaultCenter] removeObserver:self];

点击按钮(当前视图控制器):

[[NSNotificationCenter defaultCenter] postNotificationName: YourCustomNotificationName object:self userInfo:someCustomDictionary];

'YourCustomNotificationName' 是一个 NSString,你必须定义一个对两个视图控制器可见的地方。

或者,如果您以编程方式创建按钮,则可以在调用“addTarget:action:forControlEvents”时使用其他视图控制器(而不是 self)。如果您使用的是 IB,我不知道...有整个“文件所有者”的东西...

于 2012-07-23T18:28:29.313 回答
0

在第二个视图控制器的头文件中添加要传递给它的变量:

@interface ATSecondViewController : UIViewController <UINavigationControllerDelegate>{
    IBOutlet UITableView *_tableView;
    NSFileManager *fileManager;
    NSString *documentsDir;
    IBOutlet UILabel *top_bar;
}

在您推送新控制器的方法中,它们可以通过以下方式访问:

ATSecondViewController *detailViewController = [[ATSecondViewController alloc] initWithNibName:@"ATBuyTripViewController" bundle:nil];
    detailViewController.documentsDir = @"SOME DIR";

如果您在 SecondViewController 中合成这些变量,则可以通过您的代码访问它们。

于 2012-07-23T18:10:35.357 回答