问题:
当我删除注释斜杠(//
)时,Xcode会在创建新的UITableViewController类时自动注释掉的内置editButtonItem不起作用。 “通过不起作用”是指根本不显示“编辑”按钮。滑动单元也不起作用。
尝试的解决方案:
我试图遵循已发布在其他stackoverflow线程上的各种变通办法,但无济于事。我发现的大多数帖子都谈到了“编辑”按钮的各个方面均不起作用(例如,没有出现负号等),但是我发现其中很少根本没有显示“编辑”按钮的帖子。
午餐:
我有一种直觉,那就是它可能与UITableViewController没有正确实现有关。我对面向对象的程序设计和Objective-c都是陌生的,所以我对答案是否很基础表示歉意,但是,这是学习过程的一部分。任何帮助深表感谢。
代码:
____。h
#import <UIKit/UIKit.h>
#import "IndividualRecipeViewController.h"
@class BrowsePrivateRecipeViewController;
@protocol BrowsePrivateRecipeViewControllerDelegate
- (void)browsePrivateRecipeViewControllerDidFinish:(BrowsePrivateRecipeViewController *)controller;
@end
@interface BrowsePrivateRecipeViewController : UITableViewController
@property (weak, nonatomic) id <BrowsePrivateRecipeViewControllerDelegate> delegate;
@property (assign, nonatomic) NSUInteger listLength;
@property (strong, nonatomic) NSDictionary *dictionaryOfRecipes;
@property (strong, nonatomic) NSMutableArray *arrayOfRecipeNames;
// ... methods
@end
____。m
@interface BrowsePrivateRecipeViewController ()
@end
@implementation BrowsePrivateRecipeViewController
@synthesize delegate = _delegate;
@synthesize listLength = _listLength;
@synthesize dictionaryOfRecipes = _dictionaryOfRecipes;
@synthesize arrayOfRecipeNames = _arrayOfRecipeNames;
- (void)viewDidLoad
{
// ... code here
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
self.navigationItem.rightBarButtonItem = self.editButtonItem;
}
// ... other methods
更新:
LINK TO SOURCE CODE
因此,我决定将源代码发布到我的整个项目中。我遇到了多个文件的问题,但是如果我将其修复为一个文件,我可以肯定其余的文件都将放到位。
请关注文件
BrowsePrivateRecipeViewController.m/.h.
这是问题最直接的实例。再次感谢您的耐心配合和帮助。
真诚的
杰森
最佳答案
首先,我绝对不会使用自定义按钮来编辑表格。仅仅因为已经内置了一个就没有必要了。
只需使用UIViewController
的editButtonItem
即可。
如果必须在按下按钮时执行其他操作,请覆盖-setEditing:animated:
并首先调用super
。
您上面提到的错误是由于尝试访问navigationBar
的navigationItem
引起的,该错误不存在。您应该访问视图控制器的navigationItem
。
self.navigationItem.rightBarButtonItem = self.editButtonItem;
关于objective-c - editButtonItem未显示,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10392472/