我正在使用NSUserDefaults在我第一次加载应用程序时显示UIAlertView。警报有一个Dismiss和一个Rate Now按钮。 Dismiss是自我解释并且工作正常,但是,我希望“立即评分”按钮打开设备上App Store中的相关位置。我在AppDelegate.m文件中使用以下代码。
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *alertshown = [defaults stringForKey:@"alertshown"]; {
if (alertshown == nil) {
UIAlertView *oneTimeWelcome = [[UIAlertView alloc]
initWithTitle: @"Thank You"
message: @"Blah Blah Blah Blah"
delegate: self
cancelButtonTitle:@"Dismiss"
otherButtonTitles:@"Rate Now",nil];
[oneTimeWelcome show];
[oneTimeWelcome release];
[defaults setObject:@"alertwasdisplayed" forKey:@"alertshown"];
}
先前在UIAlertView中使用了第二个按钮我使用此代码来调用新视图;
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex == 0)
{
// Do something wonderful here
}
else if (buttonIndex == 1)
{
AppSupportView *controller = [[AppSupportView alloc] initWithNibName:@"AppSupportView" bundle:nil];
controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:controller animated:YES];
[controller release];
}
但是,当在AppDelegate.m文件中使用代码时,这不起作用?任何示例都可以让我的立即评价按钮打开App Store。抱歉格式化,但它不会让我改变文本
编辑 - 这是我在AppDelegate.m文件中处理的全部代码
{//以下代码块在用户首次打开应用程序时显示UIAlert。仅在alertshown == 0
时显示NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *alertshown = [defaults stringForKey:@"alertshown"]; {
if (alertshown == nil) {
UIAlertView *oneTimeWelcome = [[UIAlertView alloc]
initWithTitle: @"Thank You"
message: @"Thanks, please rate blah blah blah"
delegate: self
cancelButtonTitle:@"Dismiss"
otherButtonTitles:@"Rate Now",nil];
[oneTimeWelcome show];
[oneTimeWelcome release];
[defaults setObject:@"alertwasdisplayed" forKey:@"alertshown"];
} }
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
if (buttonIndex == 0)
{
// Yes, do something
}
else if (buttonIndex == 1)
{
答案 0 :(得分:1)
我假设当你说它不起作用时,它就不会编译。
您正在致电
[self presentModalViewController]
来自app delegate的,它不是UIViewController。您需要实例化一个UIViewController并从那里调用它。无论如何,尽快退出appdelegate是一种很好的做法 - 只需在那里做APP级别的事情,并将UI,处理等代码放入视图控制器中。
答案 1 :(得分:1)
确保您的AppDelegate遵守UIAlertViewDelegate
- 协议。
AppDelegate头文件中的示例定义:
@interface MyAppDelegate : NSObject <UIApplicationDelegate, UIAlertViewDelegate>
答案 2 :(得分:0)
为NSUserDefault
值设置一些默认值 - &gt;如果 NULL ,则显示AlertView
并将一些值填入NSUserdefault
。或者没有。