Objective c 对象能否在另一个视图控制器中可见?

Objective c 对象能否在另一个视图控制器中可见?,objective-c,cocoa-touch,Objective C,Cocoa Touch,随着时间的推移,掌握Obj-C是件好事 所以,我会用我的例子来学习。我使用的是选项卡式视图控制器。我在页面上有一个UIButton,它会显示一个新视图,如下所示: FilterViewController *ctrl = [[FilterViewController alloc] init]; [UIView transitionFromView:self.view toView:ctrl.view duration:1 options:UIViewAnimationOptionTransit

随着时间的推移,掌握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];
我试图了解对象在应用程序中是如何工作的,而不是命令行工具


非常感谢

只需在
FilterViewController
中定义一个属性:

@property (nonatomic, strong) timeFilter;
然后,您可以将视图控制器中的
timeFilter
分配给
filtervewcontroller
,然后再显示它:

TimeFilter *myTimeFilter = [[TimeFilter alloc] init];
[myTimeFilter saveTime:1300];
FilterViewController *ctrl = [[FilterViewController alloc] init];
ctrl.timeFilter = myTimeFilter;
然后在FilterViewController中,您可以执行以下操作:

int timeSelected = [self.timeFilter getTime];
并且不要使用从视图:到视图:持续时间:选项:完成:的转换来显示新的视图控制器。实现目标的正确方法是:

ctrl.modalTransitionStyle = UIModalTransitionStylePartialCurl;
[self presentViewController:ctrl animated:YES completion:nil];

只需在
FilterViewController
中定义一个属性:

@property (nonatomic, strong) timeFilter;
然后,您可以将视图控制器中的
timeFilter
分配给
filtervewcontroller
,然后再显示它:

TimeFilter *myTimeFilter = [[TimeFilter alloc] init];
[myTimeFilter saveTime:1300];
FilterViewController *ctrl = [[FilterViewController alloc] init];
ctrl.timeFilter = myTimeFilter;
然后在FilterViewController中,您可以执行以下操作:

int timeSelected = [self.timeFilter getTime];
并且不要使用从视图:到视图:持续时间:选项:完成:的转换来显示新的视图控制器。实现目标的正确方法是:

ctrl.modalTransitionStyle = UIModalTransitionStylePartialCurl;
[self presentViewController:ctrl animated:YES completion:nil];

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

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];

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

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];

嘿,对不起!这让我迷路了。那么,getTime是否仍然在类TimeFilter中定义,比如
intthetime-(int)getTime{return theTime;}
@joshboot时间过滤器中定义了yes
getTime
。你不必改变那门课。属性类似于指针,具有自动的getter/setter方法和内存管理。您基本上是在告诉FilterViewController类要使用哪个TimeFilter实例。我想我离这有点近了。因此,我创建了类TimeFilter,在FirstViewController.h文件中创建了一个属性,我在.h和.m中为FilterViewController导入了TimeFilter.h文件,因此我假设现在我必须在FilterViewController(屏幕上弹出的视图)中导入TimeFilter.h,然后执行
[TimeFilter设置时间:1]在FirstViewController中,可以通过时间过滤器访问它。getTime是否正确?谢谢你对我的容忍嘿,对不起!这让我迷路了。那么,getTime是否仍然在类TimeFilter中定义,比如
intthetime-(int)getTime{return theTime;}
@joshboot时间过滤器中定义了yes
getTime
。你不必改变那门课。属性类似于指针,具有自动的getter/setter方法和内存管理。您基本上是在告诉FilterViewController类要使用哪个TimeFilter实例。我想我离这有点近了。因此,我创建了类TimeFilter,在FirstViewController.h文件中创建了一个属性,我在.h和.m中为FilterViewController导入了TimeFilter.h文件,因此我假设现在我必须在FilterViewController(屏幕上弹出的视图)中导入TimeFilter.h,然后执行
[TimeFilter设置时间:1]在FirstViewController中,可以通过时间过滤器访问它。getTime是否正确?谢谢你对我的容忍嘿,谢谢你!在我的书(Objective-C编程,第五版)中我还没有提到单例,所以我将尝试第一个!因此,只要类包含在文件的顶部,它就可以通过类方法在所有视图中访问,对吗?因此,更改视图类/对象内的数据保持不变?如果创建单例,则需要通过dispatch_onceHey使其线程安全,谢谢!在我的书(Objective-C编程,第五版)中我还没有提到单例,所以我将尝试第一个!因此,只要类包含在文件的顶部,它就可以通过类方法在所有视图中访问,对吗?因此,更改视图时,类/对象中的数据保持不变?如果创建单例,则需要通过一次dispatch_使其线程安全