这是我关于SO的第一篇文章,所以嗨!
我也是Xcode和Obj-C的新手,所以不要太苛刻。
我正在关注斯坦福大学youtube.com/watch?v=L-FK1TrpUng的演示 出于某种原因,我遇到了错误。而不是从头开始我宁愿找出我出错的地方。
好的,所以这里。
我有两个视图控制器,我目前正在学习推送和弹出。
我的第一个视图控制器(firstViewController.h)标题:
#import <UIKit/UIKit.h>
@interface FirstViewController : UIViewController {
}
- (IBAction)pushViewController:(id)sender;
@end
然后最初这是在实现文件(firstViewController.m)中设置的,就像这样
#import "firstViewController.h"
@implementation FirstViewController
- (IBAction)pushViewController:(id)sender{
}
此时我将IB从“文件所有者”拖动到“UIButton”并连接“pushViewController”
然而,在某处我收到了一些错误,我忽略了。
现在我将第二个视图控制器添加到我的firstViewController.m中,就像这样;
#import "firstViewController.h"
#import "secondViewController.h"
@implementation FirstViewController
- (IBAction)pushViewController:(id)sender{
SecondViewController *secondViewController = [[SecondViewController alloc] init];
secondViewController.title = @"Second";
[self.navigationController pushViewController:secondViewController animated:YES];
[secondViewController release];
}
我以前收到的错误似乎在某种程度上阻止了我从第二个ViewController笔尖中的textLabel拖动
(secondeViewController.h)
#import "firstViewController.h"
#import "secondViewController.h"
@implementation FirstViewController
- (IBAction)pushViewController:(id)sender{
SecondViewController *secondViewController = [[SecondViewController alloc] init];
secondViewController.title = @"Second";
[self.navigationController pushViewController:secondViewController animated:YES];
[secondViewController release];
}
所以我通过在firstViewController.xib中右击它来删除我原来的UIButton中的引用。
现在我无法重新创建从“文件所有者”到“UIButtons”,“pushViewController”插座的链接(它是一个插座还是一个动作?),也不能在我的secondViewControllers笔尖中创建从“文件所有者”到的链接'UILabel'。
任何帮助?
如果有人有兴趣,请在此处投放项目文件。 http://zer-o-one.com/upload/files/PushPop.zip
非常感谢。
答案 0 :(得分:1)
插座是将一个对象连接到另一个对象的路径。动作是响应事件而在特定对象上调用的方法名称。可可传统上使用目标/动作进行相当多的通信,尽管现在这部分地被块所取代。
无论如何,你的项目:
firstViewController.xib错误地认为其文件所有者是类型为'firstViewController'的类。它实际上是'FirstViewController'类型 - 与大多数编程语言一样,Objective-C对类名称区分大小写。在Interface Builder中,打开firstViewControlller.xib,选择“文件所有者”,打开检查器并前往“i”选项卡,然后更正顶部的类名。完成后,尝试切换到连接选项卡(箭头指向右侧的选项卡),您应该看到它正确找到了您的班级和您的IBAction。然后,您应该能够控制拖动。
基本上相同的注释适用于secondViewController。
如果您感到好奇,Objective-C与例如C ++,因为所有类名在运行时都是已知的,并且可以从其名称的字符串版本实例化一个类。这就是XIB / NIB的加载方式。