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

如果BookmarkState是一个boolean属性,你就错过了self. (应该是self.BookmarkState == NO。)

更新:

在您更新的示例代码中,您将 aBOOLINT. ( if (_BookmarkState != _bookmarkbtn.tag)) 需要解决的问题。

您还需要更新 if 条件以使用_BookmarkStateor self.BookmarkState

第二次更新:

您当前正在检查是否_BookmarkState != _bookmarkbtn.tagBOOL(YES/NO) 与INT(0/1) 进行比较。你不应该这样做。相反,使用 BOOL 来确定状态:

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 回答