iPhoneSDK: метод селектора UIBarButtonItem нацелен на неправильные экземпляры - PullRequest
1 голос
/ 10 января 2012

Это происходит только когда я открываю и закрываю клавиатуру, это проблема с "UIResponder"?Или это касается «removefromsubview»?

У меня есть настраиваемая панель инструментов, и кажется, что мои UIBarButtonItems нацелены на неправильный экземпляр QuestionTableViewController, поэтому он вызывает метод селектора ранее загруженного контроллера в стеке, но не селекторметод текущего объекта.

Первая страница отображается правильно, но когда я второй раз загружаю этот наконечник в контроллер навигации, он нацелен на метод действия первого объекта, а не на текущий объект.

Inмой RootViewController я загружаю каждый раз эти кончики для разных страниц:

QuestionTableViewController *questionViewController = [[QuestionTableViewController alloc] initWithNibName:@"QuestionTableViewController" bundle:nil];

Затем в методе viewDidload QuestionTableViewController я делаю это;

UIBarButtonItem *rightButton = [[[UIBarButtonItem alloc] initWithTitle:nextArrow style:UIBarButtonItemStylePlain target:self action:@selector(localNextView:)] autorelease];
        rightButton.width=120.0f;                       
self.customToolBar= [[[CustomToolbar alloc] 
                                       initWithFrame:CGRectMake(0,436,self.navigationController.view.frame.size.width, 44)] autorelease];
[self.customToolBar setItems:[NSArray arrayWithObjects:bckButton, rightButton, nil] animated:NO];                      
        [self.navigationController.view addSubview:self.customToolBar];

-(void) localNextView:(id)sender {
//i.e when i am on the third page, here when i check the 
//sender I see the object belongs to first page!!
}

И затем я удаляю его на viewWillDisappearЯ удалил его из navigationcontroller, чтобы убедиться, что в следующем представлении используется собственная панель инструментов, но не экземпляр previois;

[self.customToolBar removeFromSuperview];
self.customToolBar=nil; 

1 Ответ

0 голосов
/ 10 января 2012

Вы можете сохранять одну и ту же кнопку uibarbton и селектор для каждого отображения вида. Вы должны изменить содержание запущенного метода, хотя. Вы можете сделать это в ViewWillAppear, потому что ViewDidLoad вызывается только один раз.

- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
// do de stuff for this view-show here.
// could be something like this. 
// viewcounter is a property and 
// an integer set to 0 in the ViewDidLoad
// and updated with viewcounter = counterview+1 each time you go to next page
switch (viewcounter){
   case 1: { do A ; break;}
   case 2: { do B ; break;}
 }
}

Что вы можете сделать, это изменить текст меток, задать значения или заголовки для кнопок и т. Д. И т. Д. Конечно, эти пункты должны быть розетками

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...