从不同的ViewController声明对象

时间:2012-07-11 21:15:45

标签: ios xcode uiviewcontroller declaration

在我的应用程序中,我有一个ViewController(ViewController 1),它有一个UITextField和一个UIButton。在我的ViewController 2中,我有一个UINavigationBar。我希望能够在ViewController 1文本字段中输入内容,按下按钮,然后将ViewController 2中的UINavigationBar文本设置为ViewController 1中的UITextField。当然,Xcode不会让你从另一个ViewController声明对象做更多的工作。我怎么能这样做?

3 个答案:

答案 0 :(得分:0)

尚未对此进行测试,但以下内容适用于您:

navBar.topItem.title = @"title";

OR

self.navigationItem.title=@"title";

@“title”将替换为在导航控制器堆栈中按下VC2之前设置的字符串变量(在VC2中)....

欢呼声

答案 1 :(得分:0)

您的问题不是很清楚,但根据我的理解,您希望ViewController的{​​{1}}设置UIButton的第二个NavigationBar标题?

对我来说,这似乎是一种非常奇怪的行为,但我认为这可能会对你有所帮助。

在您的第一个ViewController创建协议/代理功能,以便在按下ViewController时您可以致电:

UIButton

然后将-(IBAction) changeTitle:(id) sender { [self.delegate buttonPressed:txtView.text]; } 的文字发送给UITextField,或者创建这两个AppDelegate的人,然后您就会收到该文字并将其发送给您的第二个ViewControllers ViewController 1}}。

-(void)buttonPressed:(NSString *)text{
secondViewController.title = text;
} 

如果该行不起作用,也许您必须实现一个方法来更改第二个ViewController中的标题。希望这对你有用,我理解你的问题。

答案 2 :(得分:0)

与Oscar的答案类似,但如果这是一个字符串,您希望多个视图控制器可以访问,那么您可以在应用委托中设置一个属性。

In AppDelegate
@property (NSString *) myString;

In View Controller setting
myAppDelegate *appDelegate =  (myAppDelegate *)[[UIApplication sharedApplication] delegate];
appDelegate.myString = @"meh"; 

In View Controller getting
myAppDelegate *appDelegate=  (myAppDelegate *)[[UIApplication sharedApplication] delegate];
NSString *mehStr = appDelegate.myString;

这不是完整的代码,但你明白了。我不确定是否会过多地将内容发送回appdelegate但是对于一个字符串它应该可以正常工作。