刚开始为Xcode和iphone开发了一个很好的小教程。我创建了一个简单的单视图项目。我在ViewDidLoad(ViewController.m)中添加了自定义按钮的代码,其中*按钮)指向showAboutPage函数
[aboutBtn addTarget:self action:@selector(showAboutPage) forControlEvents:(UIControlEventTouchUpInside)];
我的按钮显示正确,并具有突出显示,颜色,字体所需的所有代码。
我应该在
中实现什么代码- (void) showAboutPage
{
}
为了推入第二个视图(redView.xib)。 玩故事板很容易,我可以通过“连接线”/拖放来实现它,但编程是我想要的,所以我可以学习正确的方法。 提前谢谢。
答案 0 :(得分:1)
您的视图的第一个字母应为大写,redView => RedView。另一个建议是,我认为使用IBAction比向按钮添加目标更好。添加RedView.h,RedView.m和RedView.xib后,应将RedView.xib的类设置为Interface Builder中的RedView。然后你可以像这样使用它:
- (void) showAboutPage
{
RedView *redView = [[[NSBundle mainBundle] loadNibNamed:@"RedView" owner:self options:nil]] objectAtIndex:0];
[self.view addSubview:redView];
}
答案 1 :(得分:0)
假设您在视图控制器类中执行了所有这些操作(这是我从您的描述中推断出来的):
- (void)showAboutPage
{
AboutPageViewController *about = [[AboutPageViewController alloc] init];
[self presentViewController:about animated:YES];
// If you're not using ARC:
[about release];
}
答案 2 :(得分:0)
尽管@ H2CO3提供了非常正确的答案,但我想补充一点,如果你喜欢使用Interface Builder,你也可以用更少的代码和更多的结构来做到这一点。在IB中从ViewController1到ViewController 2创建一个segue,将它的标识符设置为唯一的,让我们说ToViewController2
。然后您的方法可能如下所示:
- (void) showAboutPage {
[self performSegueWithIdentifier:@"ToViewController2" sender:self];
}
假设你想传递一些变量,你可以这样做:
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"ToViewController2"]) {
[segue destinationViewController setYourVariable:variable];
// Pass your variables on to the next view here.
}
}
关于这一点的好处是,应该传递给下一个ViewControllers的所有东西,假设你有来自ViewController的几个segue,正在这个方法中传递。