这个定制的uialertview怎么样?

时间:2009-12-08 04:19:54

标签: iphone cocoa-touch

这是我采取的代码......

  - (void)willPresentAlertView:(UIAlertView *)alertView
    {
        [[[alertView subviews] objectAtIndex:2] setBackgroundColor:[UIColor colorWithRed:0.5 green:0.0f blue:0.0f alpha:1.0f]];
    }

    - (void) presentSheet
    {
        UIAlertView *baseAlert = [[UIAlertView alloc] 
                                  initWithTitle:@"Alert" message:@"This alert allows the user to choose between a 'safe' and a 'deadly' choice, indicated by button color.\n\n\n\n" 
                                  delegate:self cancelButtonTitle:nil
                                  otherButtonTitles:@"Deadly!", @"Safe", nil];
UITextField *txtFld = [[UITextField alloc] initWithFrame:CGRectMake(60,10,240,31)];
[txtFld setDelegate:self];
[txtFld setBackgroundColor:[UIColor clearColor]];
[baseAlert addSubView:txtFld];
[txtFld release];
        [baseAlert show];
    }

我的问题是如果允许更改苹果公司提供的UIControls的基本外观,因为我没有看到苹果不应该允许这种类型的定制的任何理由。

2 个答案:

答案 0 :(得分:7)

警报视图长期以来已经标准化,因为灭火器和安全标志之类的东西是标准化的,即您不希望人们在出现问题时不得不拼出新的界面。

通常,在高度标准化的界面中更改某些内容是个坏主意。它会给最终用户带来什么好处?他们会想,“该死的,我丢失了所有的数据,但警告说我确实看起来确实很有艺术感!”更有可能的是,他们不会理解对话框实际上是警报,而是应用程序正常运行的一部分。

说了这么多,没有什么可以阻止你创建自己的自定义视图并以模态方式呈现它。这比Apple API引擎盖下的更安全,更容易。

答案 1 :(得分:3)

我不知道Apple是否会拒绝访问未记录的子视图的应用程序,但他们肯定会建议不要这样做。事实上,当我上周参加iPhone技术讲座时,一位开发人员传道人明确表示不会这样做,因为实施将会改变,你的应用程序将会崩溃。