2011-03-18 129 views
0

我有一个警报视图,其中有一个文本字段。下面是代码:需要摆脱一些警告

UIAlertView *myAlert = [[UIAlertView alloc] initWithTitle:@"Password" message:nil delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Enter", nil]; 
[myAlert addTextFieldWithValue:nil label:@"Type Password"]; 
[[myAlert textField] setSecureTextEntry:YES]; 
[[myAlert textField] setDelegate:self]; 
[[myAlert textField] setTextAlignment:UITextAlignmentCenter]; 
[[myAlert textField] becomeFirstResponder]; 
[myAlert show]; 
[myAlert release]; 
myAlert = nil; 

我得到包括[[myAlert textField]线4个警告,每个。我收到的警告是“找不到方法-addTextFieldWithValue:label:(返回类型默认为'id')”和“找不到Method '-textField'(返回类型默认为'id')。”我应该怎么做才能解决这些问题?有没有更好的方法来显示警报视图中的文本字段而没有任何警告?

回答

4

您的警告原因是UIAlertView类没有任何此类方法,例如addTextFieldWithValuetextField

一般来说,除了允许在几个基本选项(“是/否”,“确定/取消”等)之间进行选择之外,警报视图不用于输入。如果您需要用户输入密码,则您的文本字段应位于常规视图的某个位置。正是由于这个原因,你所使用的方法在UIAlertView中没有实现。

参考:UIAlertView

+1

@Preston:您使用的UIAlertView中,这是什么@Mac暗示,但并没有明确说无证属性和方法。 他们可能实际上工作,但您的应用程序可能会被苹果拒绝使用它们。 (它们是警告,因为你使用的公共头不包含它们,所以编译器会为你标记它,实际的对象可能支持这些东西,这就是它在运行时不会爆炸的原因。 ) – 2011-03-18 01:47:50

+0

@quixoto:+1并感谢您的评论 - 我不知道这些方法实际上存在,但没有记录!每天学习新的东西...... :)另外,关于使用这种技术是应用程序拒绝的原因的好处。使用未公开的API也会使应用程序的维护和调试变得更加困难(如问题所示)。 @Preston:简单的信息:尽量避免以不同寻常的方式做事! – Mac 2011-03-18 01:55:55