그래서 "TopNewsViewController"라는 ViewController 클래스가 있습니다. RootViewController에서 NavigationController 스택으로 푸시됩니다.UIPopOver를 사용하여 다른보기로 이동
TopNewsViewController에서 단추를 클릭하면 나타나는 팝업이 나타납니다. 그것은 PopOver에서 테이블보기를 표시합니다.
이제 PopOver의 tableView : didSelectRowAtIndexPath 메소드에서 TopNewsViewController의 일부 속성을 수정하고 탐색 스택에 다시 넣기를 원합니다. 다음과 같이 나는 방법을 구현하고있다 : 팝 오버가의 ViewController하지 않고, 대신에있는 UITableViewController 때 나는 "self.navigationController"를 사용하고 있기 때문에
TopNewsViewController *topNewsViewController = [[[TopNewsViewController alloc] initWithNibName:@"TopNewsViewController" bundle:nil] autorelease];
NSString *feedStr = [rootViewController.feeds objectAtIndex:rowNumber];
[rootViewController release];
NSArray *thisFeed = [NSArray arrayWithObjects:feedStr, nil];
topNewsViewController.feeds = thisFeed;
topNewsViewController.pageTitle = [categories objectAtIndex:rowNumber];
[self.navigationController pushViewController:topNewsViewController animated:YES];
[tableView deselectRowAtIndexPath:indexPath animated:YES];
나는이 작동하지 않는다는 것을 깨달았다. 대신 "topNewsViewController.navigationController"를 시도했지만 작동하지 않았습니다.
누구나 구현 방법에 대한 제안이 있습니까? 도움말/제안 사항을 매우 높이 평가합니다!
아 - 네 말이 맞아. 하지만 어떻게 "대리자"로 내 RootViewController 구현할 것이라고? Popover View Controller에서 RootViewController 객체를 인스턴스화 하시겠습니까? 마찬가지로 : RootViewController * rootViewController = [[RootViewController alloc] initWithNib ....? – darksky
참조 : [Objective-C로 델리게이트를 만드는 방법] (http://stackoverflow.com/questions/626898/how-do-i-create-delegates-in-objective-c) –
그래서 popoverviewcontroller에서 이것을 만들었습니다 : @protocol PopOverDelegate @ 필요 없음 - (void) didSelectRow : (NSUInteger) row; @ end' 및 tableView : didSelectRowAtIndexPath : 구현 예 : NSUInteger rowNumber = [indexPath row]; [[자체 위임] didSelectRow : rowNumber]; [tableView deselectRowAtIndexPath : indexPath animated : YES]; ' 그러나 didSelectRow가 호출되지 않습니다 (일부 디버깅을 했음). 프로토콜을 잘못 작성하고 있습니까? –
darksky