0

我最近才开始自学 Objective-C 和 iphone/ipad 开发。凭借我在 Java/Android 编码方面的唯一经验,我在使用这种新语言时遇到了一些问题。

我试图UISegmentedControl在这个应用程序中使用来决定按下“成员”按钮时将显示哪个视图。我通过在按下“members”按钮时从UISegmentedControl名为“ memberPicker”的 中获取当前选定的文本,然后检查它是否是@"Current"或者@"Alumni"决定显示什么视图来做到这一点。

在此处输入图像描述

此功能似乎工作正常,但是,当我单击 UISegmentedControl 中的“校友”按钮时,应用程序崩溃并出现以下错误:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[MainPageViewController MemberSegmentedControl:]: unrecognized selector sent to instance 0x7557250'

我相信我的问题在于正确声明或设置我的 UISegmentedControl,我知道它可以采用数组等。但我只需要它在选择 Current 或 Alumni 之间交替,然后我的“成员”按钮将完成剩下的工作。关于如何解决这个问题的任何想法?

这是我的 .m 视图中的代码

#import "MainPageViewController.h"
#import "AKPsiAppViewController.h"

@interface MainPageViewController ()
@property (weak, nonatomic) UISegmentedControl *memberPicker;

@end

@implementation MainPageViewController

@synthesize memberPicker = _memberPicker;


- (IBAction)membersButtonPressed:(UIButton *)sender
{
    if([[self.memberPicker titleForSegmentAtIndex: self.memberPicker.selectedSegmentIndex] isEqualToString:@"Current"])
   {
      [self performSegueWithIdentifier:@"Current Member Segue" sender:self]; 
   }
}
@end
4

2 回答 2

2

您可能已将UISegmentedControlInterface Builder 中的IBOutlet名称连接MemberSegmentedControl到您稍后在@interface您的类中删除的名称。如果UISegmentedControl除了memberPicker.

希望能帮助到你!

于 2013-06-23T19:01:57.447 回答
1

您收到的错误意味着您正在调用 IBAction/函数MemberSegmentedControl:在 .m 文件中不存在。也许您之前已经创建了此函数并将其与UISegmentedControl 的Value Changed连接,但您没有编写它的实现(在 .m 文件中)。也许您已将其删除,但连接仍然存在。要检查这一点,请按照以下步骤操作。

  1. 打开界面生成器
  2. 单击UISegmentedControl
  3. 打开Connections Inspector(单击 View Menu,单击 Utilities,然后单击“Show Connections Inspector”。或者,您可以按Command+Options+6
  4. Sent Events下,检查是否有任何事件(尤其是Value Changed)连接到"File owner's MemberSegmentedControl:"。如果是,则通过单击 x 按钮将其删除,然后重试。

如果您的问题没有得到解决,请执行以下操作

  1. 分享 Interface Builder 文件(XIB 文件)的屏幕截图
  2. 共享头文件(.h 文件)
于 2013-06-23T21:01:11.300 回答