0

ブレークポイントを追加してプログラムをデバッグし、見つかったポインターがネストされた if ステートメントに到達しない

ネストされた if if else ステートメントのロジックが正しいことを恐れています。

- (void)bookmarkcurrentIndex {

    currentIndex = [modelArray indexOfObject:contentViewController.page];

    if ([contentViewController.bookmarks containsIndex:currentIndex]) // Remove bookmark

        if (BookmarkState == NO) {

            [contentViewController.bookmarks removeIndex:currentIndex];

        }
        else {   

            [contentViewController.bookmarks addIndex:currentIndex];

        }
    }
}

編集:

- (IBAction)bookmarkAction:(id)sender {



if (_BookmarkState != _bookmarkbtn.tag)
{
    [_bookmarkbtn setImage:[UIImage imageNamed:@"Bookmark-N.png"] forState:UIControlStateNormal];
    _bookmarkbtn.tag = 0;
     [self setBookmarkState:NO];

}
else
{
    [_bookmarkbtn setImage:[UIImage imageNamed:@"Bookmark-Y.png"] forState:UIControlStateNormal];     
    _bookmarkbtn.tag = 1;
    [self setBookmarkState:YES];

}

_bookmarkbtn.tag = _BookmarkState;

[self bookmarkcurrentIndex];

}
4

2 に答える 2

1

BookmarkStatebooleanプロパティの場合、 がありませんself。(する必要がありますself.BookmarkState == NO。)

アップデート:

更新されたサンプル コードでは、 を と比較しBOOLていINTます。( if (_BookmarkState != _bookmarkbtn.tag)) に対処する必要があります。

_BookmarkStateorを使用するには、if 条件も更新する必要がありますself.BookmarkState

2 回目の更新:

現在、かどうかを確認していますが、これは(YES/NO) と(0/1)を_BookmarkState != _bookmarkbtn.tag比較しています。これを行うべきではありません。代わりに、BOOL を使用して状態を判断します。BOOLINT

if (self.BookmarkState) { // If it's YES.
  [_bookmarkbtn setImage:[UIImage imageNamed:@"Bookmark-N.png"]
                forState:UIControlStateNormal];
} else { // It's NO.
  [_bookmarkbtn setImage:[UIImage imageNamed:@"Bookmark-Y.png"] 
                forState:UIControlStateNormal];
}
self.BookmartState = !self.BookmarkState;

それが最初の問題です。

于 2013-08-05T21:07:19.560 に答える
1

開き括弧と閉じ括弧を一致させると、一致しません。あなたの外側の if ステートメントはどこにも行かないようです。注意深く見て、私が正しいかどうかを確認してください。コードをコピーしてフォームに直接貼り付けましたか? もしそうなら、あなたのコードに何か問題があります。次のようになります。

- (void)bookmarkcurrentIndex {

    currentIndex = [modelArray indexOfObject:contentViewController.page];

    if ([contentViewController.bookmarks containsIndex:currentIndex]) { // Remove bookmark

        if (BookmarkState == NO) {
            [contentViewController.bookmarks removeIndex:currentIndex];
        } 
        else {   
          [contentViewController.bookmarks addIndex:currentIndex];
        }
    }
}

再フォーマットして修正したことがわかります。の後に左中括弧がありませんif ([contentViewController.bookmarks containsIndex:currentIndex])。これがあなたの問題であることを願っています。

于 2013-08-05T21:07:56.040 に答える