문제

UIBarButtonItem *rButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:NULL];

rButton.action = @selector(refreshAction);
self.navigationItem.rightBarButtonItem = rButton;
[rButton release];

위의 코드는 버튼을 만들고 내비게이션 막대에 추가하는 데 잘 작동하지만 버튼을 클릭하면 exc_bad_access로 앱이 충돌합니다. rbutton.action = @Selector (RomfressAction)에 주석을 달면; 버튼을 클릭하면 아무것도하지 않지만 중단되지 않습니다.

- (void)refreshAction {
    NSLog(@"refreshAction");
}

이 코드는 NavigationViewController ViewDidload 메소드에서 NavigationController 스택으로 푸시되는 TableViewController의 ViewDidload 메소드에 있습니다.

나는 아마도 이것을 작동시키기 위해 3 시간을 보냈다.

도움이 되었습니까?

해결책

평소와 같이 메모리 관리는 범인이었습니다. NavigationController에서 TableViewController로드 :

NearbyTableViewController *tableController = [[[NearbyTableViewController alloc] initWithNibName:@"NearbyTableViewController" bundle:nil] autorelease];
self.nearbyTableController = tableController;   

[self pushViewController:self.nearbyTableController animated:YES];
[tableController release];

AutorELEASE로 설정된 객체를 출시하는 것은 메모리 관리에서 가장 일반적인 오류 여야합니다. 해당 라인 삭제 [TableconTroller Release]는 문제를 해결했습니다.

다른 팁

지정하면 운이 좋다 @selector(refreshAction) 버튼을 만들 때, 즉 :

UIBarButtonItem *rButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(refreshAction)];

이니셜 라이저에 동작을 지정하지 않으면 대상이 저장되지 않을 수 있습니다.

코드가 작동하지 않는 이유를 정확히 100% 확신하지는 않지만 생성자에 직접 선택기를 설정하는 것이 작동합니다.

UIBarButtonItem *rButton = [[UIBarButtonItem alloc] 
    initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh   
                         target:self 
                         action:@selector(refreshAction)];
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top