iOS开发使按钮在其他viewcontroller上执行某些操作

时间:2012-07-23 18:03:22

标签: ios

我需要在另一个页面上创建一个按钮。我知道如何编写一个按钮来在同一页面上制作想要的东西(相同的viewcontroller)也使该按钮打开另一个页面(另一个viewcontroller),但我怎样才能同时创建它?

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

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

这是关于代表的吗?请解释一下。

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

你也可以解释一下我在哪里写我是菜鸟,我很难理解你说的话吗?

3 个答案:

答案 0 :(得分: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;

-(void)viewDidLoad:

中的第二个(ru2)控制器中
UILabel *lblSecond = [[UILabel alloc] initWithFrame:CGRect(10, 10, 20, 100)];
[lblSecond setText:myProperty];
[self.view addSubview:lblSecond];

答案 1 :(得分: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中合成这些变量,可以通过代码访问它们。

答案 2 :(得分:0)

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

[[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,我不知道......这就是整个'文件所有者'的事情......