在我的应用程序中,我有一个具有 UITextField 和 UIButton 的 ViewController (ViewController 1)。在我的 ViewController 2 中,我有一个 UINavigationBar。我希望能够在 ViewController 1 文本字段中键入内容,按下按钮,然后将 ViewController 2 中的 UINavigationBar 文本设置为 ViewController 1 中的 UITextField。但是,当然,Xcode 不会让您在没有其他 ViewController 的情况下声明对象做更多的工作。我怎样才能做到这一点?
问问题
207 次
3 回答
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,但对于一个字符串,它应该可以正常工作。
于 2012-07-11T22:37:15.743 回答
0
您的问题不是很清楚,但据我所知,您希望将ViewController
'sUIButton
设置NavigationBar
为第二个标题ViewController
?
对我来说这似乎是一种非常奇怪的行为,但我认为这可能会对你有所帮助。
在您第一次ViewController
创建协议/委托功能时,您UIButton
可以在按下时调用:
-(IBAction) changeTitle:(id) sender {
[self.delegate buttonPressed:txtView.text];
}
然后将您UITextField
的文本发送给您AppDelegate
或创建这两个ViewControllers
的人,您将在那里收到该文本并将其发送给您的第二个ViewController
。
-(void)buttonPressed:(NSString *)text{
secondViewController.title = text;
}
ViewController
如果该行不起作用,也许您将不得不实现一种方法来更改第二个标题。希望这对您有用,并且我理解您的问题。
于 2012-07-11T22:22:23.863 回答
0
尚未对此进行测试,但以下内容应该适合您:
navBar.topItem.title = @"title";
或者
self.navigationItem.title=@"title";
@"title" 将被替换为在将 VC2 推入导航控制器堆栈之前设置的字符串变量(在 VC2 中)......
干杯
于 2012-07-11T21:21:05.127 回答