故事板 - 以编程方式打开视图

时间:2011-12-15 16:12:45

标签: iphone objective-c ios5 xcode4.2

我目前正在构建一个使用故事板的Iphone应用程序。我知道如何通过ctrl + click方法等按钮打开新视图。我遇到的问题是当用户点击按钮时,我需要进行一些计算和处理,以及打开一个Web连接以提取数据我可以在下一个视图中填充表格,但在我可以执行任何操作之前,视图会先打开。

我遇到的是视图在我连接到Web服务之前很久就加载了,并且在下一个视图中计算并存储了表的数据,因此它加载了空白。我需要以编程方式调用按钮中的视图,或以某种方式减慢进程的速度" loading"屏幕,但不知道如何做。我想如果可以在视图加载后填充表中的数据,那也可以。 (如果可能的话)

任何可以指向正确方向的提示或文章都将受到赞赏。我自己也找不到任何东西。

感谢。

- 连接方法 -

- (IBAction)connect:(id)sender {
//First begin by logging into the web service.

_email = self.logintxt.text;

//                            ---SOAP 1.1---
//large soap creation.  edited for privacy etc.
NSString *soapMsg = 
[NSString stringWithFormat:@"",_logintxt.text
 ];

//---print it to the Debugger Console for verification---
//NSLog(soapMsg);

NSURL *url = [NSURL URLWithString: 
              @""];
NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:url];

//---set the headers---
NSString *msgLength = [NSString stringWithFormat:@"%d", [soapMsg length]];

[req addValue:@"" forHTTPHeaderField:@"Host"];
[req addValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
[req addValue:@"" forHTTPHeaderField:@"SOAPAction"];
[req addValue:msgLength forHTTPHeaderField:@"Content-Length"];

//---set the HTTP method and body---
[req setHTTPMethod:@"POST"];
[req setHTTPBody: [soapMsg dataUsingEncoding:NSUTF8StringEncoding]];



NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:req delegate:self];
if (conn) {
    XMLData = [NSMutableData data];     
}


[self performSelector:@selector(getXMLList) withObject:NULL afterDelay:2.0];
[self performSegueWithIdentifier:@"LoginSegue" sender:sender];

2 个答案:

答案 0 :(得分:2)

您可以在控制器中使用按钮或链接到方法的任何内容,并在处理完毕后在方法内部调用 performSegueWithIdentifier:以在完成后强制转换。在视图显示之前,这将自动调用 prepareForSegue:

我已经做了类似的事情,检查我的tutorial here中登录页面上的登录详细信息。

答案 1 :(得分:1)

我可以建议自己编写按钮动作。为了达到这个目的,你必须把东西放在你的.h中

@interface MyClass : UIViewController {
    IBOutlet UIButton *my_btn;
}

@property (nonatomic, retain) IBoutlet UIButton *my_btn;

- (IBAction)MyBtnTapped:(id)sender;
你的.m中的

记得

  @synthesize my_btn;

然后只需使用IB将动作链接到您的按钮,然后瞧 第一步已经完成。

在你的.m中,你现在可以实现一个处理数据回溯的函数MybtnTapped,然后打开新的UIView来实现你的新数据。