JoB*_*324 39 iphone cocoa objective-c
我一直认为可以将类作为方法参数传递,但是我在实现这个概念时遇到了麻烦.现在我有类似的东西:
- (id)navControllerFromView:(Class *)viewControllerClass
title:(NSString *)title
imageName:(NSString *)imageName
{
viewControllerClass *viewController = [[viewControllerClass alloc] init];
UINavigationController *thisNavController =
[[UINavigationController alloc] initWithRootViewController: viewController];
thisNavController.tabBarItem = [[UITabBarItem alloc]
initWithTitle: title
image: [UIImage imageNamed: imageName]
tag: 3];
return thisNavController;
}
Run Code Online (Sandbox Code Playgroud)
我称之为:
rootNavController = [ self navControllerFromView:RootViewController
title:@"Contact"
imageName:@"my_info.png"
];
Run Code Online (Sandbox Code Playgroud)
这张照片出了什么问题?
Pet*_*sey 46
Run Code Online (Sandbox Code Playgroud)- (id)navControllerFromView:(Class *)viewControllerClass
它只是Class,没有星号.(Class不是类名;你没有传递指向Class类实例的指针,你自己传递一个类.)
Run Code Online (Sandbox Code Playgroud)rootNavController = [ self navControllerFromView:RootViewController
你不能像这样传递一个裸名字 - 你必须给它发一条消息.如果您确实想要在某处传递该类,则需要向其发送class消息.从而:
rootNavController = [ self navControllerFromView:[RootViewController class]
title:@"Contact"
imageName:@"my_info.png"
];
Run Code Online (Sandbox Code Playgroud)
Ben*_*tow 12
看起来你差不多了.你想通过[RootViewController class]而不是RootViewController.这给了你一个Class价值.另外,我不认为你想要你的功能Class *,只需要一个Class.它实际上不是Objective-C对象.
| 归档时间: |
|
| 查看次数: |
21296 次 |
| 最近记录: |