我在'profile.m'中创建了两个接口'profile'和'editProfile'。 我想在配置文件中有一个表(或者开头是*标签),然后我可以点击'edit'并在TextField中填入一个字符串。使用“保存”按钮,我将此字符串保存在数据库(或外部变量)中。那当然没问题.. 现在我的问题:点击'保存'我想回到'个人资料'页面,我的代码:
[self.navigationController popViewControllerAnimated:YES];
但我希望更新IBOutlet UILabel *标签(或表格)。此*标签应显示我在“editprofile”中输入TextField的文本。 但它没有更新!我的代码“个人资料”的一部分:
@implementation Profil
@synthesize label;
// ....
-(void) method{
Database* db = [[Database alloc] init];
if([db getadresse]!=nil){
NSString *s=[db getadresse];
label.text=s;
[data addObject:s];
[datadetail addObject:@"Adresse"];}
//...
和'editprofil':
-(IBAction)save:(id)sender{
Database* db = [[Database alloc] init];
[db setadresse:TextField.text];
[self.navigationController popViewControllerAnimated:YES];
Profile* p= [[Profile alloc] init];
[p method];}
我可以做些什么来立即更新*标签?
谢谢!
那么'个人资料'中的表怎么样?我想让它焕然一新。 我在'ViewWillApear'中添加了以下几行:
data = [[NSMutableArray alloc] init]; //NSMutableArrays
datadetail = [[NSMutableArray alloc] init];
database* db = [[database alloc] init];
if([db getadresse]!=nil){
NSString *s=[db getadresse];
[data addObject:s];
[datadetail addObject:@"Adresse"];}
if([data count]>0){
UITableView *table = [[UITableView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]
style:UITableViewStylePlain];
table.autoresizingMask = UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth;
table.delegate = self;
table.dataSource = self;
[table reloadData];
self.view = table;
}
因此,表(在ViewWillAppear中创建)应该显示数组的一个条目('[db.getadresse]')。但我得到了例外:
- [Profile tableView:numberOfRowsInSection:]:无法识别的选择器发送到实例0x688d290
NumberOfRowsInSection只是:return [data count]
答案 0 :(得分:0)
当视图出现时,UIKit会将viewWillAppear:
消息发送给视图控制器。您的第一个(“配置文件”)视图控制器可以在收到该消息时更新标签:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
self.label.text = code to get the text from the database;
}