Нижняя панель инструментов мигает секунду? - PullRequest
0 голосов
/ 14 мая 2011

эта маленькая проблема действительно возникает у меня.

У меня есть контроллер иерархической навигации: RootView -> 2ndListView -> DetailView

Я реализовал нижнюю панель инструментов с кнопками на DetailView.Там прекрасно работает.

Однако в 2ndListView, когда я следую за тем же и помещаю следующий код в viewdidload или viewwillappear или любой другой подобный метод, кнопка просто мигает на секунду, когда загружается представление,а затем прячется.

Вместо этого, если я помещу этот код в cellForRowAtPathIndex (чтобы после этого ничего не выполнялось), он работает.Но это, очевидно, очень неэффективно.

Итак, между ними что-то происходит.В чем может быть проблема?

NSMutableArray *array;
NSMutableArray *tags;

@implementation SMSListViewController


@synthesize smses,catID,addButtonItem,filteredSMS,searchBar,searchController;

-(void)getStarted{


    array = [[NSMutableArray alloc] init];
    tags = [[NSMutableArray alloc] init];

    SMSDBAccess *smsDBAccess = [[SMSDBAccess alloc] init];

    smsDBAccess.catID = self.catID;

    self.smses = [smsDBAccess getAllItems];

    [smsDBAccess closeDatabase];

    [smsDBAccess release];    
}

- (id)initWithStyle:(UITableViewStyle)style
{
    self = [super initWithStyle:style];
    if (self) {
        // Custom initialization
    }

    return self;
}


- (void)dealloc {

    [array release];
    [smses release];
    [super dealloc];
}


#pragma mark - View lifecycle

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self.navigationController setToolbarHidden:NO];

    self.navigationItem.rightBarButtonItem = self.editButtonItem;
    UIBarButtonItem *addSMSButoon = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCompose target:self action:@selector(addSMS:)];
    UIBarButtonItem *space = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
    NSArray *buttons = [NSArray arrayWithObjects:space,addSMSButoon, nil];

    [self.navigationController.toolbar setItems:buttons animated:NO];

    [addSMSButoon release];
    [space release];
}

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [self getStarted];
    [self.tableView reloadData];
}


#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    // Return the number of sections.

    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // Return the number of rows in the section.
        return [smses count];    
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
    }

    // Configure the cell...
    SMS *aSMS = [self.smses objectAtIndex:indexPath.row];
    cell.accessoryType=UITableViewCellAccessoryDisclosureIndicator;
    cell.textLabel.text =aSMS.sms;

    cell.detailTextLabel.text=aSMS.sms;

    return cell;
}

@end

1 Ответ

0 голосов
/ 14 мая 2011

navigationController является общим для всего стека навигации, поэтому если есть место, где вы устанавливаете элементы navigationController на nil (возможно, при вызове viewDidDisappear), это вызовет элементычтобы уйти после установки новым контроллером вида.

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