【发布时间】:2012-04-03 20:38:12
【问题描述】:
我有一个问题,我想设置 UILabel 或 UItextView 或其他 IBOUTLET 对象的文本,但我只能在 viewwillappear 和 viewdidload 方法中执行此操作,如果我在代码中的另一个方法中设置文本,则不会更改任何内容,这里是一个例子:
我有一个从另一个类中检索字符串的方法,然后我想在我的 uilabel 中设置这个字符串:
- (void)setDetailItem:(id)newDetailItem
{
if (detailItem != newDetailItem) {
NSLog(@"SetDetailItem");
[detailItem release];
detailItem = [newDetailItem retain];
detailString = [[FindStringClass alloc] init];
// Update the view.
detailItem = [detailString searchStringFor:detailItem.name];
if (detailItem) {
//
NSLog(@"setDetail: %@",detailItem.stringName);
[self configureView];
}
}
}
- (void)configureView {
NSLog(@"configure view: %@",detailItem.stringName);
mySerialTitle.text = detailItem.stringName;
}
NSLog 工作,我可以在控制台中看到我的字符串,但视图中的文本不会改变,相反,如果我在 ViewWillAppear 或 viewDidLoad 方法中设置一个简单的文本,那么与 IBOOutlets 的连接是正确的,像这样:
- (void)viewDidLoad
{
mySerialTitle.text = @"CIAO";
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
}
这是我从另一个视图调用 setDeatItem 的调用函数:
self.searchResultViewController.detailItem = [myArray objectAtIndex:[indexPath row]];
[self.navigationController pushViewController:self.searchResultViewController animated:YES];
谁能帮帮我?
编辑: 这是调用该方法的 NSLog:
2012-03-19 12:51:02.617 TestApp[292:b603] SetDetailItem
2012-03-19 12:51:06.161 TestApp[292:b603] setDetail: Chicken
2012-03-19 12:51:06.162 TestApp[292:b603] configure view: Chicken
2012-03-19 12:51:06.175 TestApp[292:b603] View DidLoad
我从 Tableviewcontroller 调用 searchviewcontroller 视图,我按下一行,然后调用新视图并传递属性。
【问题讨论】:
-
发布更多代码...为您提供的第一个函数提供完整代码..以及何时调用..
-
我已经编辑...但是 NSLog 工作,所以我不明白为什么不更改标签中的文本...如果我这样做:mySerialTitle.text = @"再见”;在配置视图方法或 setDetailItem 方法中,不要更改文本...我要疯了
-
添加断点并检查是否实际调用了配置视图......你也能告诉你什么时候调用第一个函数..给出你调用它的代码..发布那个函数太..
-
是的,进入配置方法,我很难过 NSLog 工作并在控制台中显示我的字符串,还有断点工作,所有工作,但 IBOutlets 不工作......工作仅在 viewdidload 和 viewwillappear 中出现
-
我已经按照你的要求编辑了通话功能
标签: ios cocoa-touch text uilabel iboutlet