我希望这是非常直截了当的。正如您将通过我的代码看到的那样,我只是想通过UIAlertView按钮按下弹回我的根视图。
我没有得到任何编译错误或警告,当我运行应用程序时,在IBAction中调用“RedeemCoupon”方法,并且UIAlertView会弹出它应该的,但它似乎不是“doneRedeeming” “方法被调用 - 我没有看到任何来自NSLog的东西(是的我知道我将buttonIndex设置为0 - 一旦我开始工作,我将修复它)。所以,基本上它不起作用。我点击“取消”按钮,警报就消失了。
顺便说一下,我不确定这是否重要,但是这个“RedeemCouponViewController”视图在堆栈上是4号,并且是在前一个视图中使用presentModalViewController添加的。
如果需要,我愿意采取其他方式 - 欢迎所有建议!
提前致谢!
// RedeemCouponViewController.h
@interface RedeemCouponViewController : UIViewController <UIAlertViewDelegate> {
// RedeemCouponViewController.m
- (IBAction) redeemYes: (UIButton*) sender {
CouponRedeem *redeem = [[CouponDatabase database] couponRedeem:_uniqueId];
[redeem release];
UIAlertView *doneRedeeming = [[UIAlertView alloc]initWithTitle:@"Coupon Redeemed!"
message:@"Thanks for shopping!"
delegate:self
cancelButtonTitle:@"Back to Main Menu"
otherButtonTitles:nil];
[doneRedeeming show];
[doneRedeeming release];
}
-(void) doneRedeeming: (UIAlertView *) doneRedeeming clickedButtonAtIndex: (NSInteger)buttonIndex {
if (buttonIndex = 0) {
NSLog(@"doneRedeemed method called");
[self.navigationController popToRootViewControllerAnimated:YES];
} else {
//do nothing
}
}
答案 0 :(得分:2)
你想拥有
if (buttonIndex == 0) {
取代
if (buttonIndex = 0) {
前者检查平等,而后者指定。
另外,你想拥有
– alertView:clickedButtonAtIndex:
你有
的地方- doneRedeeming:clickedButtonAtIndex:
答案 1 :(得分:1)
您需要使用UIAlertViewDelegate
methods:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {}
不
-(void) doneRedeeming: (UIAlertView *) doneRedeeming clickedButtonAtIndex: (NSInteger)buttonIndex {}
答案 2 :(得分:0)
使用委托方法-alertView:didDismissWithButtonIndex:
侦听取消按钮索引
答案 3 :(得分:0)
@ PengOne的回答是正确的:你的问题是:
if (buttonIndex = 0) {
你说
我知道这不正确,但我只是 我想确定声明是这样的 现在是真的...
但buttonIndex = 0
评估为0
,使其等同于
if (0)
无论buttonIndex的值如何,该块中的代码都将永远不会执行。如果您真的想无条件地执行此操作,请将if更改为if( 1 )
,或者只取出if。
如果您在调试器中运行此代码,这将是微不足道的。你可能认为你知道你的代码在做什么,但如果你不看它运行,你就不会。