0

我是 iPhone 应用程序开发的新手。

我正在开发一个 iPad 应用程序。它在顶部包含一个菜单栏,单击它可以检索子视图。子视图由 UIPickerView 组成。从 UIPickerView 中选择一行后,导航到另一个 UIViewController。

UIPickerView 方法是在一个单独的类中编写的(由于此功能贯穿整个应用程序,我将其设为通用类)。所以,

[self.navigationController pushViewController:controller animated:YES];

对我不起作用!

我能够获得要推送的类的名称(它会根据所做的选择而变化)。有什么办法可以做到吗?

提前致谢 :-)

4

2 回答 2

3

我猜你真正想要的是从类名创建一个对象

简单的答案是

[[NSClassFromString(className) alloc] init...]

要获得更彻底的答案,您应该查看在 Objective-C 中从类名的 NSString 创建对象

于 2012-07-06T11:33:59.583 回答
1

你可以使用委托方法(委托方法允许对象之间的通信)来实现这个场景

例如,在您的 UIPicker(.h) 类中定义一个委托协议,如下所示

@protocol pickerProtocol;

@interface MyPicker : NSObject {

    id <pickerProtocol> pickerDelegate;
}
@property(nonatomic,retain) id <pickerProtocol> pickerDelegate;

@end

@protocol pickerProtocol

- (void) pushViewController;
@end

并在从 UIPickerView 中选择一行时调用此委托方法

[pickerDelegate pushViewController];

然后在所有使用选择器的视图控制器中编写委托方法的实现

- (void) pushViewController {
     [self.navigationController pushViewController:controller animated:YES]; 
}

不要按如下方式设置委托

MyPicker *picker = [MyPicker alloc]init];
picker.pickerDelegate = self;
于 2012-07-06T11:58:23.893 回答