这是一个非常简单的iPhone /可可问题。我有一个在两个视图之间转换的按钮。我使用界面构建器设置了大部分内容。当我点击按钮并显示第二个视图时,如何以编程方式更改按钮的文本(例如,说'回')?访问控制器中的界面生成器中创建的UI元素?
回答
您需要定义并连接“插座”。查看the documentation,记下“连接和绑定”部分。
在你的类声明,声明一个按钮对象,并确保它被指定为一个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)
你需要建立一个出口为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基础知识。
希望有所帮助。
或者,您可以为控件分配一个唯一标记,并使用-[UIView viewWithTag:]
获取指向控件的UIView
指针。在大多数情况下,网点是首选机制,但标签在表格单元格等方面很有用。
到目前为止,大多数帖子都专注于创建按钮,并且非常正确。以下回答问题的其余部分:
当我单击按钮并显示第二个视图时,如何以编程方式更改按钮的文本(例如说'回')?
最简单的方法,如果我正确理解你的情况,就是使用即插即用的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];
}
所以,这是客观的-c。它看起来很脏。 – jjnguy 2009-07-21 12:40:34
- 1. 如何在界面生成器中访问UI元素的属性
- 2. 在界面生成器中创建的标记控制
- 3. 访问界面生成器
- 4. UI界面生成器c#
- 5. 如何在界面生成器中创建溢出xib的许多元素
- 6. 确定界面生成器中的UI元素的可用运行时属性
- 7. UITable视图界面生成器创建
- 8. iPhone创建uibarbutton无界面生成器
- 9. Xcode 4.3中的界面生成器的可访问性
- 10. iphone:在接口生成器中创建元素的访问代码
- 11. 更改界面生成器中未创建的UIButton的文本
- 12. 使用界面生成器构建的自定义UIView可通过界面生成器访问/定位
- 13. 在界面生成器中创建一个类似于优胜美地的UI
- 14. XCode和界面生成器问题:无法通过IBOutlet连接UI元素
- 15. 如何在界面生成器中创建UITableView中的隐藏单元格
- 16. 在界面生成器中创建的UIBarButtonItem不工作 - 困惑
- 17. 在界面生成器中创建的UIScrollView滚动出视图
- 18. 在界面生成器中创建按钮矩阵的麻烦
- 19. 如何在界面生成器中创建命名的颜色?
- 20. 在界面生成器中创建和使用框架中的定制视图
- 21. rails中的控制器生成问题
- 22. 如何在Yii中访问控制器中的表单元素
- 23. 在python中创建一个控制器进程的web界面
- 24. 无法访问元素父控制器
- 25. 界面生成器可访问性标签跨越多个元素
- 26. 获取控制器中无法访问的元素的ID
- 27. 来自控制器的templateUrl中的访问元素 - AngularJS
- 28. 界面生成器
- 29. 在引擎/控制器中注册用户界面元素
- 30. 在界面生成器中访问animationDuration和animationRepeatCount
值得澄清,这不是一个对象,而是一个变量。该变量包含一个指向该对象的指针(一旦该笔尖已被加载)。我知道你知道这一点,但许多人把这混在一起,认为变量是对象。 – 2009-07-20 22:51:02