使用模态对话框时,iPhone-UITextField是否未以编程方式设置为可编辑?
我是iPhone开发的新手,在一件显然非常简单的事情上遇到了一些麻烦使用模态对话框时,iPhone-UITextField是否未以编程方式设置为可编辑?,iphone,objective-c,uiviewcontroller,uitextview,Iphone,Objective C,Uiviewcontroller,Uitextview,我是iPhone开发的新手,在一件显然非常简单的事情上遇到了一些麻烦 - (IBAction) addButtonPressed:(id) sender { AddDrinkViewController *addDrinkVC = [[AddDrinkViewController alloc] initWithNibName:@"DrinkDetailView" bundle:nil]; UINavigationController *addNavCon = [[UINavigati
- (IBAction) addButtonPressed:(id) sender {
AddDrinkViewController *addDrinkVC = [[AddDrinkViewController alloc] initWithNibName:@"DrinkDetailView" bundle:nil];
UINavigationController *addNavCon = [[UINavigationController alloc] initWithRootViewController:addDrinkVC];
//the textview is not becoming editable here, even thou i'm setting the property to true.
addDrinkVC.ingredientsTextView.editable = YES;
[self presentModalViewController:addNavCon animated:YES];
[addDrinkVC release];
[addNavCon release];
}
基本上,在导航控制器上点击[+]按钮,就会出现模式视图
显示的视图是从另一个视图扩展而来的,该视图最初从nib本身禁用了textfields和TextView
我试图在点击[+]时使TextView和textfields可编辑,但到目前为止,我没有任何运气
我知道这似乎是一件很简单的事情,但我一直在网上寻找,一直没有找到答案。。。也许我遗漏了一些关于模态视图行为的基本信息
提前非常感谢。两件事:
假设文本视图是使用Interface Builder添加到视图控制器的,则可能是您忘记在代码中将IB中的视图连接到IBOutlet
要测试这一点,您可以添加一个快速断言:
NSAssert(addDrinkVC.ingredientsTextView,@"ingredientsTextView in AddDrinkViewController is nil. Did I forget to wire it?")
addDrinkVC.ingredientsTextView.editable = YES;
如果断言失败,您的程序将崩溃,您将在控制台上看到该消息
其次,我将把设置可编辑属性的逻辑移到视图控制器本身(在您的例子中是AddDrinkViewController类)
-或-
你的问题很简单 设置属性时,此时未加载nib,且所有插座均处于冻结状态,因此属性不会设置为文本视图。因此,您只需将这部分代码放在AddDrinkViewController类的viewDidLoad方法中
-(void) viewDidLoad
{
[super viewDidLoad];
addDrinkVC.ingredientsTextView.editable = YES;
}
好答案!!!试着使用布拉德·史密斯(brad smith)所说的断言:)这确实是一个好习惯。
-(void) viewDidLoad {
NSAssert(addDrinkVC.ingredientsTextView,@"ingredientsTextView in AddDrinkViewController is nil. Did I forget to wire it?")
addDrinkVC.ingredientsTextView.editable = YES;
}
-(void) viewDidLoad
{
[super viewDidLoad];
addDrinkVC.ingredientsTextView.editable = YES;
}