Я создал пользовательскую кнопку в ViewDidLoad
, которая показывает новый вид (через downALevel):Пользовательская кнопка на панели навигации перестает работать
UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemPlay target:self action:@selector(downALevel:)];
self.navigationItem.rightBarButtonItem = addButton;
В представлении нагрузок мелких и кнопка работает. Когда я вернусь к просмотру, кнопки будут отключены и не будут работать. Я использую Xcode 6; это не было проблемой в предыдущих версиях.
Любые идеи?
(IBAction) downALevel: (ID) отправитель {
[самостоятельного showWaiting];
[self performSelectorInBackground: (@ selector (callGrouper4)) сObject: nil];
}
- (Недействительными) showWaiting {
waitAlert = [[UIAlertView alloc] initWithTitle:@"Please Wait...." message:nil delegate:self cancelButtonTitle:nil otherButtonTitles: nil];
[waitAlert show];
UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
indicator.center = CGPointMake(waitAlert.bounds.size.width/2, waitAlert.bounds.size.height - 50);
[indicator startAnimating];
[waitAlert addSubview:indicator];
}
- (Недействительными) callGrouper4 {// вниз уровень
@autoreleasepool {
float progressPercent;
NSString *progMsg;
NSString *curProgress;
NSNumberFormatter *formatter2 = [[NSNumberFormatter alloc] init];
[formatter2 setNumberStyle: NSNumberFormatterDecimalStyle];
[formatter2 setMinimumFractionDigits:0];
[formatter2 setMaximumFractionDigits:0];
NSManagedObjectContext *newMoc = [[NSManagedObjectContext alloc] init];
NSPersistentStoreCoordinator *coordinator2 = [[self managedObjectContext] persistentStoreCoordinator];
[newMoc setPersistentStoreCoordinator:coordinator2];
[newMoc setUndoManager:nil];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"TrialBalance" inManagedObjectContext:newMoc]];
.. .... много манипуляций с данными ......
// закончить
[waitAlert dismissWithClickedButtonIndex:0 animated:TRUE];
reportBalances2 = nil;
Level2ActivityViewController *newController = [[Level2ActivityViewController alloc] initWithNibName:@"Level2ActivityViewController" bundle:[NSBundle mainBundle]];
[newController setManagedObjectContext:newMoc];
[newController setHeaderTitle:headerTitle];
[newController setLevelToQuery:@"Obj2"];
[newController setDdSumOrDetail:ddSumOrDetail];
[newController setOrgNameVar:orgNameVar];
[newController setPeriodNum:periodNum];
[newController setReportMode:reportMode];
[newController setSectionSort:@"obj1"];
[[self navigationController] pushViewController:newController animated:YES];
}
UPDATE 1 Давайте назовем первый вид А и новый вид B. Я только что обнаружил, что если B имеет тот же код, чтобы создать пользовательскую кнопку, а затем кнопку на A выключен. Если код отсутствует в B, тогда все будет хорошо. Я очень смущен ?? !!
Не могли бы вы показать нам код 'downALevel:'? – wcd
Вы что-то делаете, когда ваш контроллер просмотра исчезает, что может вызвать эту проблему? – user2955351
downALevel - это почти 900 строк кода, которые управляют данными, которые затем представлены в новом представлении. Один и тот же код (downALevel) также можно выполнить с помощью жестов левого салфетки, который отлично работает, тогда как кнопка работает только один раз. Когда я вернусь к исходному виду, кнопка будет отключена, но жестом салфетки все равно будет работать. – Eusi