저는 iOS 개발에 약간 새로운 기능이 있습니다. 이 두 메소드는 두 개의 분리 된 뷰 컨트롤러 (마스터 뷰 컨트롤러와 에디터 뷰 컨트롤러)에서 선언되고 구현되며 에디터에서 마스터로 데이터를 전달해야합니다. 마스터에는 적절한 이름으로 업데이트해야하는 테이블 뷰가 있습니다. (참고 : iPhone 용 기본 마스터 - 디테일 응용 프로그램 템플릿을 사용했습니다. 단일보기 응용 프로그램으로 수동으로 생성하지 않았습니다)편집기보기 컨트롤러를 닫은 후 UITableView가 업데이트되지 않습니다.
현재 MasterViewController 내의 UITableView는 새 셀로 업데이트되지 않습니다 . 나에게는 정말 대단한 한 주였습니다. 나는 뭔가를 놓치고 있어야합니다. 여기에 마스터 뷰 컨트롤러의 코드는 다음과 같습니다
@implementation FTMasterViewController
@synthesize bPlusMinusField, cPlusMinusField, cTerm, bTerm;
-(void) passTrinomial:(CCTrinomial *)tri withBPlusMinusField:(NSString *)bField withBTerm:(double)bTermField withCPlusMinusField:(NSString *)cField withCTerm:(double)cTermField {
//allocate the array
if (!self.trinomials) {
self.trinomials = [[NSMutableArray alloc] init];
}
//set Master VC properties to tri fields passed in
self.bPlusMinusField = bField;
self.cPlusMinusField = cField;
self.bTerm = bTermField;
self.cTerm = cTermField;
NSString *trinomial = [NSString stringWithFormat:@"x² %@ %g %@ %g", bPlusMinusField, bTerm, cPlusMinusField, cTerm];
[self.trinomials insertObject:trinomial atIndex:0];
NSLog(@"%lu", (unsigned long)[self.trinomials count]);
}
#pragma mark - Table View
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [self.trinomials count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
cell.textLabel.text = [NSString stringWithFormat:@"x² %@ %g %@ %g", bPlusMinusField, bTerm, cPlusMinusField, cTerm];
return cell;
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"showDetail"]) {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
NSDate *object = _objects[indexPath.row];
[[segue destinationViewController] setDetailItem:object];
}
}
@end
이것은 내가 문제를 해결하기 위해 볼 필요하다고 판단되는 코드입니다 : 분명히, 내가 구현의 나머지 부분에서 기본 대체 방법이있다.
이것은 편집기보기 컨트롤러 코드입니다. 생각이 나타 났을 때, 예, "완료"버튼은 내 메인 스토리 보드의 -handleDoneButtonPushed : 메소드에 연결됩니다.
-(IBAction)handleDoneButtonPushed:(id)sender {
[self dismissViewControllerAnimated:YES completion:NULL];
FTMasterViewController *masterVC = [[FTMasterViewController alloc] init];
[masterVC passTrinomial:factoring withBPlusMinusField:bPlusMinusField.text withBTerm:[bTriField.text doubleValue] withCPlusMinusField:cPlusMinusField.text withCTerm:[cTriField.text doubleValue]];
}
이 에디터의 뷰 컨트롤러는 단순히의 UITextField의 형태로 일부 값을 얻고, 그 클래스의 객체를 통해 마스터 뷰 컨트롤러에 떨어져 그 손을. 다시 한 번, 상단 탐색 모음에서 완료 버튼을 클릭하면 편집기보기 컨트롤러가 닫히지 만 검색된 값으로 테이블보기가 업데이트되지 않습니다.
도움을 주시면 대단히 감사하겠습니다. :)
A-hah! 내가 잃어버린 것이 있다는 것을 알았다. 이전에 위임 패턴을 사용 했었지만이 메서드를 사용한 방법을 잘못 생각했습니다. 내가 그것을 밖으로 시도하고 어떻게 작동하는지 보자. –
@HunterE. 기꺼이 도와 줘. 삼항 삽입은 당신이해야 할 일입니다. – Anupdas
글쎄, -handleDoneButtonPushed : 메소드에서, 나는 이것을했다 : [self.delegate editorController : self didCompleteEditingTrinomial : trinomialString] 그리고 프로토콜을 채택하고 FTMasterViewController에서 메소드를 구현했다. 구현에 코드를 붙여 넣기 만하면되지만 테이블 뷰는 아직 업데이트되지 않습니다. 배열을 처리하기 위해 -tableView : cellForRowAtIndexPath :를 수정했지만 여전히 그렇지 않습니다. 생각? –