나는 barButtonItem 핸들러 메쏘드에 있으며 네비게이션 컨트롤러에 대한 참조가 필요합니다. 하지만 에는 저장된 참조 ~ 네비게이션 컨트롤러이 없습니다. 어떤 생각?UIBarButtonItem에서 포함 navigationController에 대한 참조를 얻으려면 어떻게해야합니까?
#import "ReportViewController.h"
#import "CenterViewAnimationUtility.h"
@implementation ReportViewController
- (void)viewDidLoad
{
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button addTarget:[CenterViewAnimationUtility class] action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
}
//next file ..
#import "CenterViewAnimationUtility.h"
@implementation CenterViewAnimationUtility
+ (void)buttonPressed:(UIBarButtonItem *)barButtonItem {
UINavigationController *navigationController = barButtonItem.//..
}
내가 다른 컨트롤러에 배치되어 더 UIBarButtonItems 및 NSButtons를 처리하는 유틸리티 클래스가 있습니다. Unfortunatelly 컨트롤러에는 UIViewController 및 UITableViewController와 같은 다른 유형이 있으므로 공통 클래스에 논리를 배치 할 수 있으므로 논리를 유틸리티 클래스에 넣을 수 있지만 어떻게 든 제어를 소유 한 컨트롤러에 대한 참조가 필요합니다. –
@ János 내 대답의 두 번째 절반을 참조하십시오. – rmaddy
두 번째 솔루션의 문제점은 유틸리티 클래스를 되돌려 주지만 컨트롤러와 아무 관련이 없습니다. –