随着时间的推移掌握Obj-C,这很好!
所以,我将使用我试图从中学习的例子。我正在使用选项卡式视图控制器。我在页面上有一个UIButton,它会显示如下的新视图:
FilterViewController *ctrl = [[FilterViewController alloc] init];
[UIView transitionFromView:self.view toView:ctrl.view duration:1 options:UIViewAnimationOptionTransitionCurlUp completion:nil];
self.filterViewController = ctrl;
[self.navigationController pushViewController:self.filterViewController animated:NO];
现在,假设我创建了一个名为TimeFilter的类,并在FirstViewController中初始化它
TimeFilter *timeFilter = [[TimeFilter alloc] init];
[timeFilter saveTime:1300];
在FilterViewController中,我可以这样做:
int timeSelected;
timeSelected = [timeFilter getTime];
我试图了解对象在应用程序中的工作方式,而不是命令行工具。
非常感谢!!
答案 0 :(得分:2)
是的,你可以做这样的事情,你必须采取行动:
1)你可以使用那些方法-class方法,因此,你不需要创建对象。
+(id)getTime
并从任何地方拨打电话
[TimeFilter getTime];
2)你可以让TimeFilter成为单身人士
+(TimeFilter*)shared
{
static TimeFilter *kTimeFilter = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
kTimeFilter = [TimeFilter new];
});
return kTimeFilter;
}
并在您的代码调用的任何地方
[[TimeFilter shared] getTime];
答案 1 :(得分:1)
只需在FilterViewController
中定义一个属性:
@property (nonatomic, strong) timeFilter;
然后,您可以在展示控件之前将timeFilter
分配给FilterViewController
:
TimeFilter *myTimeFilter = [[TimeFilter alloc] init];
[myTimeFilter saveTime:1300];
FilterViewController *ctrl = [[FilterViewController alloc] init];
ctrl.timeFilter = myTimeFilter;
然后在FilterViewController中你可以这样做:
int timeSelected = [self.timeFilter getTime];
并且不要使用transitionFromView:toView:duration:options:completion:
来显示新的视图控制器。实现目标的正确方法是:
ctrl.modalTransitionStyle = UIModalTransitionStylePartialCurl;
[self presentViewController:ctrl animated:YES completion:nil];