0

私は数独のような iOS アプリケーションを作成しています。そのアプリケーションでは、元に戻すやり直しボタンを作成しました。数独では、各グリッド値はボタンのタイトルです。元に戻すボタンまたはやり直しボタンをクリックするたびに、アクションに応じてグリッド値が変更されます。 NSUndomanager でやりますか?サンプル コードはありますか?解決策を教えてください

  if([value intValue] == 0)
            {
                CurrentTitle=[NSString stringWithFormat:@"%@", [[b titleLabel ]text]];
                    [self AllSweepFunctionAction];
                    [b setTitle:appendedString forState:0];


                if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
                {
                    [[b titleLabel] setFont:[UIFont fontWithName:@"Kids" size:15]];
                }else
                {
                    [[b titleLabel] setFont:[UIFont fontWithName:@"Kids" size:7]];
                }
                [b setTitleColor:[UIColor darkGrayColor] forState:0];
                [ b titleLabel].lineBreakMode = NSLineBreakByCharWrapping;
                [b titleLabel].textAlignment = NSTextAlignmentCenter;
            }
4

1 に答える 1

0

まず、ViewController がジェスチャを処理する最初のレスポンダーになる必要があるため、ViewController にこのメソッドを記述します。

- (BOOL)canBecomeFirstResponder 
{
    return YES;
}

第二に: ビュー コントローラーは、画面に表示されたときにファーストレスポンダーになる必要があります。これは、[self becomeFirstResponder]呼び出し-loadViewまたは-viewDidLoad

[self performSelector:@selector(becomeFirstResponder) withObject:nil afterDelay:0.3];

遅延時間を試すことができます

次に、viewController でプロパティの変更を登録し、ボタン アクションでのundoメソッドを呼び出すことができます。NSUndoManagerまた、編集目的でこのビューのコントローラーメソッドをオーバーライドできると思います

- (void)setEditing:(BOOL)editing animated:(BOOL)animated {

    [super setEditing:editing animated:animated];
//do some editing 


}

元に戻すコードを含むサンプル コードを次に示します。

ここにリンクがあります!

上記のコード リンクで、このコードを RootViewController.m の viewDidLoad に追加します。

 // left undo button
    UIBarButtonItem *undoButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(undoOperations:)];
    self.navigationItem.leftBarButtonItem = undoButton;

そして、これのどこかにRootViewController.mこのメソッドを追加します

-(void)undoOperations:(id)sender
{
    [self.undoManager undo];

}

元に戻す機能のある左ボタンが必要です。これで良いスタートが切れると思います。

于 2013-11-15T10:30:12.593 に答える