Objective c 我们能否将一个参数传递给view Dod load或view将从一个类中显示另一个类

Objective c 我们能否将一个参数传递给view Dod load或view将从一个类中显示另一个类,objective-c,xcode,ipad,object,view,Objective C,Xcode,Ipad,Object,View,抱歉,如果这不是一个标准问题,但现在您的解决方案可以帮助我。在我的应用程序中,我有两个类:ClassA和ClassBClassB中有一个表视图。我使用一个查询来填充ClassB中的表视图,但是我必须查询的列名是我从ClassA中得到的,我想传递到ClassB并执行查询并填充表视图。我是否可以将参数传递给viewDidLoad或viewwillbeen?当视图加载时,这些将被调用。或者还有其他方法可以这样做吗?我建议您为查询编写一个setter方法。实例化类B后,可以随时调用该方法来更新数据集和表

抱歉,如果这不是一个标准问题,但现在您的解决方案可以帮助我。在我的应用程序中,我有两个类:
ClassA
ClassB
ClassB
中有一个表视图。我使用一个查询来填充
ClassB
中的表视图,但是我必须查询的列名是我从
ClassA
中得到的,我想传递到
ClassB
并执行查询并填充表视图。我是否可以将参数传递给
viewDidLoad
viewwillbeen
?当视图加载时,这些将被调用。或者还有其他方法可以这样做吗?

我建议您为查询编写一个setter方法。实例化类B后,可以随时调用该方法来更新数据集和表视图

您需要调整参数,以处理将用于查询的任何形式的表示

B.h类

@interface ClassB : UITableViewController {

}

@property (nonatomic, copy) NSString *query;
B.m级

// method declared in ClassB

@implementation 

@synthesize query;

// other methods here ...

- (void)setQuery:(NSString *)newQuery
{   
    // query is an instance variable declared in your .h
    [newQuery retain];
    [query release];
    query = newQuery;

    // perform your new data fetch with the supplied query

    [self.tableView reload];
}

@end
A.m级

- (void)viewDidLoad
{
    [super viewDidLoad];
    classB = [[ClassB alloc] initWithNibName:@"ClassB" bundle:nil];
    [classB setQuery:@"your query string here"];
}

您通常会在目标类上创建一个属性,并用需要传递的内容填充它,然后将另一个类推送到堆栈上,或者让它更新。

为什么不为此声明一个属性呢

@interface ClassB:...

@property (nonatomic, copy) NSString * columnName

@end
并在实施中加以综合

当您从
ClassA
创建
ClassB
实例时,请执行此操作

ClassB * classB = [[ClassB alloc] initWithNibName:.. bundle:..];
classB.columnName = theColumnName;
[self pushViewController:classB animated:YES];
[classB release];

viewDidLoad
中使用此参数,将值传递给类或对象构造函数。然后将该值保存到该类中的属性。然后,您可以从加载的视图或其他事件访问该属性

这更像是一个通用的编程概念,而不是与objective c、iPad等相关的任何东西


因此,在头文件中定义一个属性。然后将该属性合成为c文件。然后在构造函数中设置属性。然后,您可以访问view Dod load事件中的属性。

请详细说明,因为我没有任何这样做的经验。我的意思是,如果您的列名在视图控制器的生命周期中经常更改,那么我必须在哪个类中编写此内容,即
ClassB
。我自己也使用过这种方法,尽管您需要小心并注意副作用,例如在
-dealloc
中设置
self.query=nil
,并且tableview数据源方法没有为该场景做好准备(很多东西可能不可用).请给我一个小样本,因为像我这样的新生很难理解你说的话,这是很基本的东西。在书中查找,或在网上查找教程(一定有很多)。苹果在Xcode中提供的基于导航控制器的模板包含一些说明这一点的代码。(就像@Deepak在回答中所说的那样)小心点。此示例不适用于在调用ClassB的viewDidLoad方法后设置属性的用例。您将设置属性,但更改不会反映