有人愿意在DropBox上查看我的(非常小的)项目并给我一个关于我的IB连接的提示吗?

时间:2010-08-22 18:53:57

标签: iphone xcode interface-builder

我正在开发一个非常小的(一个视图)iPhone应用程序(Xcode 3.2.3上的iOS 4.0.2),我认为我错过了如何在IB中建立IBOutlet和IBAction连接。我希望你们中的一个(或几个)善良的人会愿意连接到我的Dropbox并点击该项目并给我一个关于我搞砸的地方的提示?

我已经在这方面工作了几天(大约三天一小时)并且还没有找到我的错误....

::叹息::

有人为此比赛吗?如果您是以下链接:http://dl.dropbox.com/u/5271440/picChoice.zip

关于APP:

运行时,这个应用程序应该在模拟器上抛出一个窗口,其中包含一个UIImageView,UILabel和一个UISegmentedControl。 UIImageView应显示默认图像,UILabel应显示默认字符串,当UISegmentedControl上触摸任何段时,图像和标签应相应更改。

我有一段时间在模拟器上工作了,但是当我把它加载到我的iPhone上时,我发现了一堆乱码(糟糕的数组初始化和指针问题。我正在学习....)

看似“修复”崩溃错误后,我似乎已经破坏了我的连接,再也没有正常运行....

真诚地感谢任何和所有的帮助!

亲切的问候,

史蒂夫奥沙利文

2 个答案:

答案 0 :(得分:1)

除了没有显示的视图外,您还有更多问题。一旦你按照约翰的回答,你仍然得到一个标签,上面写着“标签”和一个不会影响任何东西的分段控件。为了使初始外观正确,您必须首先删除三行代码:

txtLabel = [[UILabel alloc] init];
imageView = [[UIImageView alloc] init];
seg = [[UISegmentedControl alloc] init];

运行时会为您处理这些问题。一旦删除它们,您就可以获得标签上的快乐面孔和正确的文字。此时,如果选择片段,则会显示空白图像和文本。现在你应该进行更改到目前为止在你的-(IBAction)segmentedControlValueChanged方法中添加一个断点,然后进行构建和调试。单击一个段然后查看self下的调试器,注意imageArraytxtArray都有0个对象。要解决此问题,您需要进行一些更改。由于您在创建后没有对任何一个数组进行任何更改,因此可以将它们设为常规NSArray并将它们声明为属性(不要忘记@synthesize)。为了将现有代码的重写保持在最低限度,您的viewDidLoad应如下所示:

- (void)viewDidLoad
{
//  txtLabel = [[UILabel alloc] init];
//  imageView = [[UIImageView alloc] init];
//  seg = [[UISegmentedControl alloc] init];
    NSMutableArray *anArray = [[NSMutableArray alloc] init];

    [anArray addObject:[UIImage imageNamed:@"jupiter2.JPG"]];
    [anArray addObject:[UIImage imageNamed:@"waffles?.JPG"]];
    [anArray addObject:[UIImage imageNamed:@"enterprise.JPG"]];
    [anArray addObject:[UIImage imageNamed:@"wrunning.JPG"]];
    [anArray addObject:[UIImage imageNamed:@"ApolloCSM.JPG"]];
    self.imageArray = [anArray copy];

    [anArray removeAllObjects];
    NSString *myStr = [[NSString alloc] initWithString:@"Jupiter II"]; 
    [anArray addObject: myStr];
    [myStr release];

    myStr = [[NSString alloc] initWithString:@"Could this be OUR Waffles?"]; 
    [anArray addObject: myStr];
    [myStr release];

    myStr = [[NSString alloc] initWithString:@"USS Enterprise NCC-1701"]; 
    [anArray addObject: myStr];
    [myStr release];

    myStr = [[NSString alloc] initWithString:@"A Woman Running"]; 
    [anArray addObject: myStr];
    [myStr release];

    myStr = [[NSString alloc] initWithString:@"Apollo Command and Service Modules"]; 
    [anArray addObject: myStr];
    [myStr release];

    self.txtArray = [anArray copy];
    [anArray release];
    imageView.image = [UIImage imageNamed:@"happy-face.JPG"];
    txtLabel.text = @"Hi there!";

    [imageView release];

    [super viewDidLoad];
}

您还可以使用NSArray方法arrayWithObjects:缩短方法,并在此过程中分配更少的对象。

答案 1 :(得分:0)

我已经下载了它。 alt text

您已打开IB,在文档区域中可以右键单击视图,将“新建引用插座”连接到文件所有者,当您将其放在那里时,它将为您提供查看选项。

这有时会发生,如果不起作用,所有事情都会破裂。

别忘了将问题标记为已接受的答案(谢谢)。

约翰。