我是新来的堆栈溢出,这是我的第一个职位,所以请耐心对待我!
我有我的软件后方和软件前方设置,他们的工作完美。
然而,当我尝试创建一个表格视图时,我发现当我尝试滑动或甚至按下按钮访问右菜单时,应用程序崩溃,而打印到日志时没有任何错误。
(我在两个单独的swift文件中有两个数组,rearVc和rightVC链接到两个单独的表格视图SWU rear和SWU right)
我在网上搜索了一周(我所有的谷歌超链接都是紫色的!!)似乎根本找不到答案。我以为把这段代码(在我后面的显示表vc中)复制到我右边的表vc中可以工作,但不幸的是没有!
(代码为SWIFT,由于我不知道obj c,所以我使用了swrevealvc的桥接头)
import Foundation
class rearTableVC: UITableViewController {
var rearTableArray = [String]()
override func viewDidLoad() {
rearTableArray = ["a", "b", "c", "d", "e", "f"]
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return rearTableArray.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier(rearTableArray[indexPath.row], forIndexPath: indexPath) as UITableViewCell
cell.detailTextLabel?.text = rearTableArray[indexPath.row]
return cell
}
}
如你所见,我正在使用“cell.detailTextLabel”?.text“这样,我在main.storyboard中构建的定制原型单元将填充我的列表。
两者都正确地链接到我的导航控制器以及其他场景。
我知道那部分很好,我只是被代码卡住了。
在我的根视图控制器im运行这段代码,它就像一个魅力,所以没有问题。
import Foundation
class aVC : UIViewController {
@IBOutlet var menuButtonLeft: UIBarButtonItem!
@IBOutlet var menuButtonRight: UIBarButtonItem!
override func viewDidLoad() {
menuButtonLeft.target = self.revealViewController()
menuButtonLeft.action = #selector(SWRevealViewController.revealToggle(_:))
menuButtonRight.target = self.revealViewController()
menuButtonRight.action = #selector(SWRevealViewController.rightRevealToggle(_:))
self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
}
}
任何帮助都是非常感谢,我更愿意添加任何更多的信息,是需要的!!
谢谢。
(抱歉,我无法添加图片)
最佳答案
解决方案:
嗨,在兜圈子几个小时后,我终于找到了一个解决方案,一个非常简单的解决方案。
在SWRevealViewController.m中缺少三个重要部分。我根本不知道obj-c,但我发现这些行缺少rightViewController的代码,所以在添加它们之后,一切都正常了!
- (id)init
{
return [self initWithRearViewController:nil frontViewController:nil rightViewController:nil];
}
- (id)initWithRearViewController:(UIViewController *)rearViewController frontViewController:(UIViewController *)frontViewController rightViewController:(UIViewController *)rightViewController;
{
self = [super init];
if ( self )
{
[self _initDefaultProperties];
[self _performTransitionOperation:SWRevealControllerOperationReplaceRearController withViewController:rearViewController animated:NO];
[self _performTransitionOperation:SWRevealControllerOperationReplaceFrontController withViewController:frontViewController animated:NO];
[self _performTransitionOperation:SWRevealControllerOperationReplaceRightController withViewController:rightViewController animated:NO];
}
我只增加了
return [self initWithRearViewController:nil frontViewController:nil rightViewController:nil];
和
rightViewController:(UIViewController *)rightViewController;
和
_performTransitionOperation:SWRevealControllerOperationReplaceRightController withViewController:rightViewController animated:NO];
线
编辑2(请求的信息)
#pragma mark - Init
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if ( self )
{
[self _initDefaultProperties];
}
return self;
}
- (id)init
{
return [self initWithRearViewController:nil frontViewController:nil rightViewController:nil];
}
- (id)initWithRearViewController:(UIViewController *)rearViewController frontViewController:(UIViewController *)frontViewController rightViewController:(UIViewController *)rightViewController;
{
self = [super init];
if ( self )
{
[self _initDefaultProperties];
[self _performTransitionOperation:SWRevealControllerOperationReplaceRearController withViewController:rearViewController animated:NO];
[self _performTransitionOperation:SWRevealControllerOperationReplaceFrontController withViewController:frontViewController animated:NO];
[self _performTransitionOperation:SWRevealControllerOperationReplaceRightController withViewController:rightViewController animated:NO];
}
return self;
}