将按钮标题传递给新视图

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

将按钮值从视图传递给控制器​​(codeigniter)

通过后退按钮将变量传递给其他视图控制器

将NSIndexPath传递给新视图

定义状态变量后以编程方式推送视图

从按钮将值传递给视图控制器字典