Iphone 标题视图标题被继承的控制器覆盖
我正在尝试将在一个视图控制器中声明的属性和对象访问到我需要它们的页面。这样做是通过对视图控制器进行子类化实现的。但我遇到了一个问题,继承的控制器正在覆盖控制器。我的意思是子类控制器的导航栏和标题视图将显示在已使用视图中。当我删除[super viewDidLoad]方法时,需要显示的vlaues未显示。继承的视图控制器的标题视图也显示。我使用以下语句进行了子类化:我还发布了代码:Iphone 标题视图标题被继承的控制器覆盖,iphone,uitableview,uinavigationbar,subclassing,qheaderview,Iphone,Uitableview,Uinavigationbar,Subclassing,Qheaderview,我正在尝试将在一个视图控制器中声明的属性和对象访问到我需要它们的页面。这样做是通过对视图控制器进行子类化实现的。但我遇到了一个问题,继承的控制器正在覆盖控制器。我的意思是子类控制器的导航栏和标题视图将显示在已使用视图中。当我删除[super viewDidLoad]方法时,需要显示的vlaues未显示。继承的视图控制器的标题视图也显示。我使用以下语句进行了子类化:我还发布了代码: ERViewEditController class: @interface ERViewEditCont
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 @"";
}
但是不行,请帮我摆脱这一切,谢谢本先生的回答:)
另外,我还有一个问题,如果可能的话,请检查一下,提前谢谢:)
您的描述有点混乱,但听起来您的超类在子类中设置了标题/按钮信息之后,正在设置标题/按钮信息。重新订购viewDidLoad,以便[超级viewDidLoad];是函数中的第一个,任何子类更改都将在超类设置后应用。您的描述有点混乱,但听起来好像您的超类在子类中设置了标题/按钮信息。重新订购viewDidLoad,以便[超级viewDidLoad];是函数中的第一个,任何子类更改都将在超类设置后应用。Ben Yeah我理解,感谢您的回答,这对导航栏问题非常有效。但是标题视图仍然被继承的视图控制器覆盖,请帮助我解决该问题!请查看编辑后的答案和屏幕截图Ben先生,提前感谢:)Ben我找到了显示继承控制器标题视图的解决方案。。。由于视图控制器是导航栏、标题视图等所有功能的子类。。将出现,因此我们需要实现超类的所有方法,即,正如我在继承的具有标题的控制器中实现的-(UIView*)tableView:(UITableView*)atableView viewForHeaderInSection:(NSInteger)节一样,我们需要实现相同的方法,只需返回nil即可解决问题。非常感谢您对我的问题的耐心和回复,再次感谢…再见TC。Ben是的,我理解,感谢您的回答,这对导航栏问题非常有效。但标题视图仍然被继承的视图控制器覆盖,请帮我解决这个问题!请查看编辑后的答案和屏幕截图Ben先生,提前感谢:)Ben我找到了显示继承控制器标题视图的解决方案。。。由于视图控制器是导航栏、标题视图等所有功能的子类。。将出现,因此我们需要实现超类的所有方法,即,正如我在继承的具有标题的控制器中实现的-(UIView*)tableView:(UITableView*)atableView viewForHeaderInSection:(NSInteger)节一样,我们需要实现相同的方法,只需返回nil即可解决问题。非常感谢您的耐心和对我问题的回答,再次感谢您……再见。