我对iPhone开发有点新意,我在使用一个非常简单的东西时遇到了一些麻烦。
- (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。
我试图在点击[+]时使textviews和textfields可编辑,但到目前为止,我没有运气。
我知道这似乎是一件非常简单的事情,但我一直在网上寻找并且找不到答案......也许我对模态视图的行为缺少一些非常基本的东西?
提前多多感谢。
答案 0 :(得分:3)
两件事:
假设使用Interface Builder将文本视图添加到View Controller,您可能忘记将IB中的视图连接到代码中的IBOutlet。
要测试这个,您可以添加一个快速断言:
NSAssert(addDrinkVC.ingredientsTextView,@"ingredientsTextView in AddDrinkViewController is nil. Did I forget to wire it?")
addDrinkVC.ingredientsTextView.editable = YES;
如果断言失败,您的程序将崩溃,您将在控制台上看到该消息。
其次,我将把可编辑属性设置为视图控制器本身的逻辑(在你的情况下是AddDrinkViewController类)
-(void) viewWillAppear:(BOOL) animated {
[super viewWillAppear:animated];
NSAssert(addDrinkVC.ingredientsTextView,@"ingredientsTextView in AddDrinkViewController is nil. Did I forget to wire it?")
addDrinkVC.ingredientsTextView.editable = YES;
}
-OR -
-(void) viewDidLoad {
NSAssert(addDrinkVC.ingredientsTextView,@"ingredientsTextView in AddDrinkViewController is nil. Did I forget to wire it?")
addDrinkVC.ingredientsTextView.editable = YES;
}
答案 1 :(得分:1)
你的问题很简单。
当您设置属性时,未加载该时间笔尖且所有出口处于冻结状态,因此该属性不会设置为文本视图。因此,您只需将该部分代码放在 AddDrinkViewController 类的viewDidLoad方法中。
-(void) viewDidLoad
{
[super viewDidLoad];
addDrinkVC.ingredientsTextView.editable = YES;
}