我目前正在构建一个使用故事板的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];
答案 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来实现你的新数据。