Я пытаюсь создать приложение iOS, в котором я создал пользовательскую панель вкладок: В UIView у меня есть разные кнопки, загружающие содержимое UIView в тот же контроллер вида.Ошибка приложения при прокрутке - EXC_BAD_ACCESS
В некоторых представлениях я вставил UITableView. Таблица загружается просто отлично, все ячейки печатаются правильно, за исключением того, что при прокрутке я получаю ошибку EXC_BAD_ACCESS. я включил зомби, чтобы получить больше информации, и я получаю следующее сообщение: «FirstTabBarController responsToSelector]. Сообщение отправлено на высвобождены, например 0x75d79d0
Я не могу понять, как это исправить
Вот немного больше на структуре приложения: в MainViewController, у меня есть UIView, который получает данные из различных UIViewControllers для загрузки содержимого для репликации TabBar:
.h файл:
#import <UIKit/UIKit.h>
@interface MainViewController : UIViewController
@property (weak, nonatomic) IBOutlet UIView *placeholderView;
@property (weak, nonatomic) UIViewController *currentViewController;
@end
Когда я загружаю с обычаем моего FirstTabBarViewController непосредственно перейти, я получаю таблицу, которая оленья кожа прокрутки:
#import <UIKit/UIKit.h>
#import "DataController.h"
@interface FirstTabBarViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> {
IBOutlet UITableView* tabBarTable;
}
@property (strong, nonatomic) IBOutlet UIView *mainView;
@property (strong, nonatomic) IBOutlet UITableView *tabBarTable;
@property (nonatomic, strong) DataController *messageDataController;
@end
.m файл:
#import "FirstTabBarViewController.h"
#import "DataController.h"
@interface FirstTabBarViewController()
@end
@implementation FirstTabBarViewController
@synthesize tabBarTable=_tabBarTable;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void)awakeFromNib
{
[super awakeFromNib];
self.messageDataController=[[DataController alloc] init];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return [self.messageDataController countOfList];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"mainCell";
UITableViewCell *cell = [tableView
dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil){
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
};
NSString *expenseAtIndex = [self.messageDataController
objectInListAtIndex:indexPath.row];
[[cell textLabel] setText:expenseAtIndex];
return cell;
}
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
// Return NO if you do not want the specified item to be editable.
return NO;
}
@end
Класса DataController является простым NSMutableArray, содержащие строки. Заказные SEGUE действует как это:
#import "customTabBarSegue.h"
#import "MainViewController.h"
@implementation customTabBarSegue
-(void) perform {
MainViewController *src= (MainViewController *) [self sourceViewController];
UIViewController *dst=(UIViewController *)[self destinationViewController];
for (UIView *view in src.placeholderView.subviews){
[view removeFromSuperview];
}
src.currentViewController =dst;
[src.placeholderView addSubview:dst.view];
}
@end
Большое спасибо за вашу помощь, это очень ценится.
привет, спасибо за помощь. К сожалению, это не сработало. Мне пришлось удалить @ "@" в методе initWithString, иначе он не будет компилироваться. Я не мог использовать функцию release: «релиз недоступен», «ARC запрещает явное сообщение« release »« – Spearfisher
yeh ... но я не знал, что вы использовали ARC в своем проекте. :-) – hpp
Я очень новичок в ARC :) Есть ли еще какое-то быстрое решение, чтобы сделать эту работу? – Spearfisher