开发者社区> 问答> 正文

在两个viewcontroller之间的delegation有问题

第一个viewcontroller是排行榜菜单,里面有一个按钮指示到第二个viewcontroller中,第二个是小游戏,如果玩家输了,最高分变动,就更新排行榜。在玩家完成游戏时建了带两个按钮的UIAlertView,一个是主菜单,另一个是重新开始,我的代码如下:我想通过delegation更新排行榜

@protocol highScoreProtocol <NSObject>

       -(void)updateHighScore:(int) score;


       @end

       @interface ViewController : UIViewController <UIAlertViewDelegate> 
       @property (nonatomic) int score;
       @property (nonatomic, weak) id <highScoreProtocol> delegateHighScore;
       @implementation ViewController
       @synthesize score=_score;
       @synthesize delegateHighScore=_delegateHighScore;

           -(void)lostGame{
           [self.delegateHighScore updateHighScore:self.score]; 

       UIAlertView *losingScreen=[[UIAlertView alloc]initWithTitle:@"Game Over" message:[NSString stringWithFormat:@"Your Score Is %d", self.score] delegate:self cancelButtonTitle:@"Main Menu" otherButtonTitles:@"Restart", nil]; 
           }

       -(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
             if (buttonIndex==0) {


           } else if (buttonIndex==1){

           }
       }

   @end

           @interface MenuVC : UIViewController <highScoreProtocol>
           @property (weak, nonatomic) IBOutlet UILabel *labelHighScore;
   @end


@implementation MenuVC

- (void)viewDidLoad
{
   [super viewDidLoad];
   ViewController *vc=[[ViewController alloc]init];
   vc.delegateHighScore=self;

}

-(void)updateHighScore:(int)score{
   if (score>[self.labelHighScore.text integerValue]) { 
       self.labelHighScore.text=[NSString stringWithFormat:@"%d", score];
   }
   NSLog(@"does this method even run");
}

展开
收起
爵霸 2016-05-27 11:27:17 1889 0
1 条回答
写回答
取消 提交回答
  • 这行代码不对

    ViewController *vc=[[ViewController alloc]init];
    vc.delegateHighScore=self;

    定义了一个新的不相干的viewcontroller

    如果你的情况是这样:定义一个viewcontrolleridentifier,选择viewcontroller,……

    然后用这行代码:

    ViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"yourIdentifier"];
    vc.delegateHighScore = self;
    2019-07-17 19:17:30
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载