2009-07-20 33 views
3

这是一个非常简单的iPhone /可可问题。我有一个在两个视图之间转换的按钮。我使用界面构建器设置了大部分内容。当我点击按钮并显示第二个视图时,如何以编程方式更改按钮的文本(例如,说'回')?访问控制器中的界面生成器中创建的UI元素?

回答

0

您需要定义并连接“插座”。查看the documentation,记下“连接和绑定”部分。

10

在你的类声明,声明一个按钮对象,并确保它被指定为一个IBOutlet:

IBOutlet UIButton* myButton; 

一旦您保存更改,如果你回到Interface Builder中,你应该可以看到这个出口当你右键点击你的文件所有者时(假设你已经正确指定了文件所有者)。通过右击拖动将此插座与屏幕上的UIButton相关联。

现在屏幕上的对象与您的代码内名称相关联。

徘徊无论你想改变的UIButton的文字,只是说:

[myButton setTitle:@"Back - or whatever else you want it to say" 
      forState: UIControlStateNormal ]; 
// you can set different title text for each state 
// of the button (selected, active, or normal) 
+1

值得澄清,这不是一个对象,而是一个变量。该变量包含一个指向该对象的指针(一旦该笔尖已被加载)。我知道你知道这一点,但许多人把这混在一起,认为变量是对象。 – 2009-07-20 22:51:02

2

你需要建立一个出口为IB:

@interface MyViewController : UIViewController { 
    IBOutlet UIButton *myButton; 
} 

保存,弹出IB,将文件的所有者设置为MyViewController,然后从UIView和UIButton创建引用出口到Connections Inspector中文件所有者的适当点。

然后在执行,你可以这样做:

[myButton setTitle:@"Back" forState:UIControlStateNormal]; 

如果你迷路与连接,我建议有一个看讲义和视频讲座在http://www.stanford.edu/class/cs193p/cgi-bin/index.php,其进入一些细节关于iPhone基础知识。

希望有所帮助。

4

或者,您可以为控件分配一个唯一标记,并使用-[UIView viewWithTag:]获取指向控件的UIView指针。在大多数情况下,网点是首选机制,但标签在表格单元格等方面很有用。

2

到目前为止,大多数帖子都专注于创建按钮,并且非常正确。以下回答问题的其余部分:

当我单击按钮并显示第二个视图时,如何以编程方式更改按钮的文本(例如说'回')?

最简单的方法,如果我正确理解你的情况,就是使用即插即用的UINavigationBarController。首先,你要你的第二个视图控制器推到视图栈:

// In firstViewController.m 
self.navigationController = [[UIViewController alloc]initWithNibName:@"secondView" bundle:nil]; 
[self pushViewController:secondViewController animated:TRUE]; 

当显示你的第二个视图控制器,你应该自动获得在导航栏的左侧的后退按钮。如果有必要改变后退按钮的文字,你可以简单地引用它,像这样:

// In secondViewController.m 
-(void)ViewWillAppear 
{ 
    [self.navigationItem.backBarButtonItem setText:@"GoBack"]; 
} 

也有左,rightBarButtonItem(S),这是很方便的进行更复杂的导航。这是一个少插即用的场景:

// In secondViewController.h 
-(IBAction)goBack; (this should appear as an action in your associated nib file) 

// In secondViewController.m 
-(void)viewDidLoad 
{ 
    self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"GoBack" style:UIBarButtonItemStylePlain target:self action:@selector(goBack)]; 
} 

-(IBAction)goBack 
{ 
    // logic to be done before going back 
    [self popViewControllerAnimated:secondViewController animated:TRUE]; 
} 
+0

所以,这是客观的-c。它看起来很脏。 – jjnguy 2009-07-21 12:40:34

相关问题