我正在编写一个iPhone应用程序,它从第一视图(RootViewController
)接收用户输入,然后它需要将输入传递给“结果”视图控制器,这是使用输入查询服务器的另一视图,解析JSON
字符串并在UITableView
中显示结果。我被困在如何“发送”这些字符串(从用户输入RootViewController
)到第二个ViewController ...任何想法?如何将RootViewController的NSSString传递给另一个视图?
Thx提前
斯蒂芬
我正在编写一个iPhone应用程序,它从第一视图(RootViewController
)接收用户输入,然后它需要将输入传递给“结果”视图控制器,这是使用输入查询服务器的另一视图,解析JSON
字符串并在UITableView
中显示结果。我被困在如何“发送”这些字符串(从用户输入RootViewController
)到第二个ViewController ...任何想法?如何将RootViewController的NSSString传递给另一个视图?
Thx提前
斯蒂芬
有三种方法可以做到这一点,具体取决于视图的设置方式。
首先,您可以使用NSNotificationCenter
发布字符串的通知。另一种观点将作为通知的观察员注册,并可以在发布信息时收集信息。其次,如果第二个视图控制器由第一个视图控制器呈现,即您将alloc/init VC分配给它并将其显示为一个导航控制器,则可以在第二个VC中创建一个属性并从根目录中对其进行设置。在第二VC的头,你会创建以下文件:在实现文件
NSString *someString;
和
@property (nonatomic, retain) NSString *someString;
然后@synthesize someString;
。这样做可以让您在显示视图之前设置该值。
最后,如果视图不相关,如第二个VC不是由根提供的那样,您将创建一个从根到第二个VC的IBOutlet。假设你已经在过去的解决方案来设置喜欢的属性,你会叫的东西沿着self.secondVC.someString = myStringToPass;
行希望那些人帮助
编辑:意识到我有注释掉的链接NSNotificationCenter .... oops
子类的第二视图的控制和写自定义的初始化方法。
-(id)initWithMyCustomValueString:(NSString*)string;
并将您的数据传递给它。
确保您在secondViewController上创建了一个iVar或属性来读取数据。
作品,但丑陋。我同意拥有字符串的属性,但是如果一个对象正在创建另一个对象,那么可能只需调用一个普通的初始化器,然后在该对象上设置属性。 – Abizern
在第二个视图控制器中,创建一个NSString实例以接收该值并在您要显示该控制器时设置它,例如在tableView:didSelectRowAtIndexPath:
方法中。
RootViewController.h
@interface RootViewController : UITableViewController
{
NSString *stringToPass;
}
@property (nonatomic, retain) NSString *stringToPass;
@end
RootViewController.m
#import "SecondViewController.h"
@implementation RootViewController
@synthesize stringToPass;
// Other code goes here...
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// for example first cell of first section
if (indexPath.section == 0 && indexPath.row == 0)
{
SecondViewController *second = [[SecondViewController alloc] initWithStyle:UITableViewStyleGrouped];
// here you pass the string
second.receivedString = self.stringToPass;
[self presentModalViewController:second animated:YES];
[second release];
}
}
@end
SecondViewController.h
@interface SecondViewController : UITableViewController
{
NSString *receivedString;
}
@property (nonatomic, retain) NSString *receivedString;
@end
SecondViewController。米
@implementation SecondViewController
@synthesize receivedString;
// methods to use the string goes here
@end
我还没有测试此代码...我已经写了回忆吧:)
Thx帮忙! – Steve
我的荣幸。总是乐于帮助 – justin