我需要在另一个页面上创建一个按钮。我知道如何编写一个按钮来在同一页面上制作想要的东西(相同的viewcontroller)也使该按钮打开另一个页面(另一个viewcontroller),但我怎样才能同时创建它?
这是一个简单计算器的例子。
这是关于代表的吗?请解释一下。
我收到了一些答案,谢谢你们让它变得简单,然后让那个按钮在第二页的标签上写一些东西你能编写那个代码吗?简单的第一页按钮就会把东西写成一个第二页上的标签。第一个视图控制器名称是ru1第二个viewcontrollers名称是ru2
你也可以解释一下我在哪里写我是菜鸟,我很难理解你说的话吗?
答案 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:
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,我不知道......这就是整个'文件所有者'的事情......