En-tête Voir le titre s'écrasé par contrôleur hérité
-
26-10-2019 - |
Question
Je tente d'accéder aux propriétés et les objets qui sont déclarées dans un contrôleur de vue dans la page où je besoin them.Did donc par la vue controller.But sous-classement J'ai eu un problème, le contrôleur hérité fait la contrôleur overwritten.I signifie la barre de navigation et vue d'en-tête du contrôleur est sous-classé s'affiche dans le view.when utilisé la méthode je supprimer [super viewDidLoad], les vlaues qui doit être affiché ne reçoit pas displayed.Also la vue d'en-tête de le contrôleur de vue hérité devient displayed.I n'utilisant le sous-classement la déclaration suivante: Je signale également le code:
ERViewEditController class:
@interface ERViewEditController:ERAddReminderController
{
UITableView *theTable;
}
@property(nonatomic,retain) IBOutlet UITableView *theTable;
@end
@implementation ERViewEditController
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad
{
self.view.backgroundColor = [[UIColor alloc]initWithPatternImage:[UIImage imageNamed:@"bg.jpg"]];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:self action:@selector(pop:)];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"Edit" style:UIBarButtonItemStylePlain target:self action:@selector(edit:)];
[self setTitle:@"Reminders Listed"];
[self.theTable reloadData];
[super viewDidLoad];
}
- (UITableViewCell *)tableView:(UITableView *)view cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *CellId = [NSString stringWithFormat:@"S%1dR%1d",indexPath.section,indexPath.row];
UITableViewCell *cell = (UITableViewCell *)[view dequeueReusableCellWithIdentifier:CellId];
UILabel *label1 = [[[UILabel alloc]initWithFrame:CGRectMake(54, 3, 100, 40)]autorelease];
label1.backgroundColor = [UIColor clearColor];
label1.textColor = [UIColor whiteColor];
UILabel *label2 = [[[UILabel alloc]initWithFrame:CGRectMake(119, 3, 100, 40)]autorelease];
label2.backgroundColor = [UIColor clearColor];
label2.textColor = [UIColor whiteColor];
UILabel *label3 = [[[UILabel alloc]initWithFrame:CGRectMake(198, 3, 100, 40)]autorelease];
label3.backgroundColor = [UIColor clearColor];
label3.textColor = [UIColor whiteColor];
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellId] autorelease];
view.backgroundColor = [UIColor clearColor];
cell.backgroundColor = [[UIColor alloc]initWithPatternImage:[UIImage imageNamed:@"reminderbutton.png"]];
if (indexPath.section == 0)
{
UILabel *label = [[[UILabel alloc]initWithFrame:CGRectMake(20, 3, 280, 40)]autorelease];
label.backgroundColor = [UIColor clearColor];
label.text = @" ID Name Event Date";
label.textColor = [UIColor cyanColor];
[cell addSubview:label];
}
else if (indexPath.section == 1)
{
const char *dbpath = [databasePath UTF8String];
sqlite3_stmt *statement;
if (sqlite3_open(dbpath, &remindersDB) == SQLITE_OK)
{
NSString *querySQL = [NSString stringWithFormat:@"SELECT name,event,date FROM reminders"];
const char *query_stmt = [querySQL UTF8String];
if (sqlite3_prepare_v2(remindersDB ,query_stmt , -1, &statement, NULL) == SQLITE_OK)
{
if (sqlite3_step(statement) == SQLITE_ROW)
{
NSString *nameField = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statement, 0)];
NSString *eventField = [[NSString alloc]initWithUTF8String:(const char *) sqlite3_column_text(statement, 1)];
NSString *dateField = [[NSString alloc]initWithUTF8String:(const char *) sqlite3_column_text(statement, 2)];
[nameField stringByAppendingString:eventField];
label1.text = nameField;
label2.text = eventField;
label3.text = dateField;
}
sqlite3_finalize(statement);
}
sqlite3_close(remindersDB);
}
switch (indexPath.row)
{
case 0:
[cell addSubview:label1];
[cell addSubview:label2];
[cell addSubview:label3];
break;
default:
break;
}
}
}
return cell;
}
My navigation bar issue is resolved,now I have still been facing the header view title issue,I used the following code to fix:
-(NSString *)tableView:(UITableView *)atableView titleForHeaderInSection:(NSInteger)section
{
return @"";
}
mais ne fonctionne pas, s'il vous plaît aidez-moi à sortir de ce, grâce Mr.Ben pour la réponse:)
J'ai aussi un autre problème, s'il vous plaît vérifier que trop si possible, grâce à l'avance:)
POPULATE sections vue de table avec des rangées de la table de base de données sqlite dans un ordre
La solution
Votre description est un peu déroutant, mais il semble que votre superclasse met une information de titre / bouton après il défini dans la sous-classe. Réorganiser votre viewDidLoad de sorte que le [super viewDidLoad]; est tout d'abord dans la fonction, toute modification de la sous-classe seront ensuite appliqués après les jeux de superclasse il.