0

我想更改 UIButton 的状态,仅当它出现在某个页面上时(带有currentIndex)。但是当导航到下一页时,我的 UIButton 显示相同selectedState而不是更改。

这是我实现的代码:

- (IBAction)bookmarkState:(id)sender {

currentIndex = [modelArray indexOfObject:contentViewController.page];
if (_BookmarkState != _bookmarkbtn.tag)   {
    [_bookmarkbtn setImage:[UIImage imageNamed:@"Bookmark-N.png"]
                  forState:UIControlStateNormal];

    [self setBookmarkState:NO]; 
    [contentViewController.bookmarks removeIndex:currentIndex];

    } 
    else {

    [_bookmarkbtn setImage:[UIImage imageNamed:@"Bookmark-Y.png"] 
                  forState:UIControlStateNormal];     

    [self setBookmarkState:YES]; 
    [contentViewController.bookmarks addIndex:currentIndex];
    }
}

我怎样才能解决这个问题。

感谢帮助。

4

1 回答 1

1

这是您的代码有什么问题:

  • 您定义currentIndex但既不再次读取它,也不更改它来自的数组。
  • 您正在更改带有书签的数组,但您从未阅读过它。
  • 您将一个名为 的对象(可能是一个按钮)的标签_bookmarkbtn与另一个看起来像某种怪异类(首字母大写)但可能是常量的对象进行比较。
  • 因此,您没有使用 currentIndex,也没有比较任何引用sender按钮操作的内容。

也许您打算将书签数组的正确元素与tag按下的按钮的元素进行比较?您的代码不会这样做。

也许一种直接的方法是在页面出现时简单地设置正确的按钮图像,并在按下按钮时切换它。

于 2013-08-09T18:09:04.410 回答