사람들은 내가 프로그래밍을 처음 접하는 문제를 처리하는 데 도움을 주며 그에 따라 일반적으로 문제가 있으며 네트워크 작업 방법을 모릅니다! 로그인 후 사이트에 로그인하는 클래스를 작성했는데 다른 뷰에서 다른 요청을 보내는 데 연결을 사용할 수 없습니다 !!! 내가 쓴 내용은 다음과 같습니다.
- (IBAction)loginClicked:(id)sender {
@try {
if([[txtUserName text] isEqualToString:@""] || [[txtPassword text] isEqualToString:@""] ) {
[self alertStatus:@"Пожалуйста заполните все поля!!!" :@"Авторизация не удолась!"];
} else {
NSString *post =[[NSString alloc] initWithFormat:@"login=%@&pass=%@",[txtUserName text],[txtPassword text]];
NSURL *url=[NSURL URLWithString:@"http://chgu.org/?mobile=1"];
NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%lu", (unsigned long)[postData length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];
NSError *error = [[NSError alloc] init];
NSHTTPURLResponse *response = nil;
NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
if ([response statusCode] >=200 && [response statusCode] <300)
{
NSData *responseData = [[NSData alloc]initWithData:urlData];
NSDictionary *jsonObject = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableContainers error:nil];
if([jsonObject objectForKey:@"error"])
{
[self alertStatus:@"Ошибка ввода данных" :@"Ю хав а трабл"];
} else {
[self alertStatus:@"Авторизация прошла успешно" :@""];
}
} else {
if (error) NSLog(@"Error: %@", error);
[self alertStatus:@"Connection Failed" :@"Login Failed!"];
}
}
}
@catch (NSException * e) {
NSLog(@"Exception: %@", e);
[self alertStatus:@"Login Failed." :@"Login Failed!"];
}
[txtUserName resignFirstResponder];
[txtPassword resignFirstResponder];
}
다른보기로 이동할 때이 연결을 어떻게 사용합니까? 밤새도록 컴퓨터에 앉아 알아낼 수없는 것을 말해주세요
델리게이트 프로토콜을 통해 이러한 컨트롤러간에 상대적으로 긴밀한 결합을 원한다고 가정하면 올바른 아이디어가 있습니다.
어느 컨트롤러도 대리자 속성이 설정 될 때까지 다른 컨트롤러에 대해 알지 못하기 때문에 둘 다에 대한 참조가있는 일부 개체가 해당 관계를 연결해야합니다. 귀하의 경우에는 두 컨트롤러를 모두 만들고 하나를 다른 컨트롤러의 대리자로 설정하고 둘 다 탭 막대 컨트롤러에 전달할 수있는 응용 프로그램 대리자 일 것입니다.
실제로 원하는 것은 앱 대리자가 두 컨트롤러에 공유 모델 개체에 대한 참조를 제공하도록하는 것입니다. FirstViewController는 버튼을 탭할 때 해당 모델을 업데이트 할 수 있으며 SecondViewController는 모델의 변경 사항을 관찰하여 모델의 디스플레이를 업데이트 할 수 있습니다 (또는 현재 모델 상태에 따라 표시 될 때보기 만 업데이트 할 수 있음). 이렇게하면 컨트롤러가 서로에 대해 알 필요가 없습니다.
secondVC에서 다음과 같이 정의하십시오.
@protocol secondVCDelegate
@interface secondVC : UIViewController
@property (nonatomic, assign) id<secondVCDelegate> delegate;
@end
@optional
-(void)someDelegateMethod:(secondVC*)viewController;
@end
secondVC의 인스턴스를 만들 때 secondVC의 delegate 속성을 self에 할당해야합니다! 이 같은:
// in firstVC
secondVC vc = [[secondVC alloc]...];
vc.delegate = self;
[navcontroller pushVC:vc];
the line vc.delegate = self; does the trick.
도움이 되길 바랍니다 ...
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다