为什么UIButton在翻页时显示选定的状态

时间:2013-08-09 17:12:23

标签: iphone objective-c ios6 uibutton

我想更改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];
    }
}

我该如何解决这个问题。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

以下是您的代码出了什么问题:

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

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

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