0

随着时间的推移逐渐掌握 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];

我试图了解对象在应用程序中的工作方式,而不是命令行工具。

非常感谢!!

4

2 回答 2

2

是的,你可以做这样的事情,你必须有办法:

1)您可以将这些方法设为类方法,因此您无需创建对象。

+(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];
于 2013-05-29T13:33:05.470 回答
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];
于 2013-05-29T13:26:17.490 回答