将按钮标题传递给新视图
Posted
技术标签:
【中文标题】将按钮标题传递给新视图【英文标题】:Passing button title to a new view 【发布时间】:2010-03-05 10:05:57 【问题描述】:我在一个视图上有一个按钮,按下它会打开另一个第二个视图。我想在第二个视图中设置一个标签,以根据按下的按钮的标签进行更改。我尝试在我的 switchViews 函数中传递(id)发件人,但这不起作用。请帮忙!
【问题讨论】:
你能把你的代码放上来看看问题出在哪里吗? 【参考方案1】:在您的第二个视图控制器上,创建一个 UILabel 作为属性,即
@interface MyViewcontroller : UIViewController
UILabel *titleLabel;
@property (nonatomic, retain) IBOutlet UILabel *titleLabel;
然后,在界面生成器中,将其附加到您要更改的标签上。
然后,在您的第一个视图控制器的 switchViews 方法中,创建第二个视图后,您可以像这样设置标题:
...
MyViewController *newViewController = [[MyViewController alloc] initWithNibName:'something' bundle:nil];
newViewController.view.titleLabel.text = @"Your new title goes here";
...
希望对您有所帮助。
【讨论】:
【参考方案2】:传递的发件人应该可以工作。只需将 sender 转换为 UIButton * 并使用 titleForState: 获取状态的标题。这是工作代码:
- (void)applicationDidFinishLaunching:(UIApplication *)application
[window makeKeyAndVisible];
UIButton * myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
myButton.frame = CGRectMake(100, 100, 100,80);
[myButton setTitle:@"test title" forState:UIControlStateNormal];
[myButton addTarget:self action:@selector(myButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
[window addSubview:myButton];
- (void)myButtonClicked:(id)sender
UIButton * clickedButton = (UIButton *)sender;
NSString * buttonTitle = [clickedButton titleForState:UIControlStateNormal];
NSLog(@"title: %@",buttonTitle);
UILabel * myLabel = [[UILabel alloc] initWithFrame:CGRectMake(100, 250, 100,80)];
myLabel.text = buttonTitle;
[window addSubview:myLabel];
【讨论】:
以上是关于将按钮标题传递给新视图的主要内容,如果未能解决你的问题,请参考以下文章
传递给新变量对象的 JavaScript 变量 POSTing as undefined to another page