我如何使用在 main.storyboard 中创建的原型单元格数组填充正确的 swreveal 视图控制器
How can i populate the right swreveal view controller with an array of prototype cells created in main.storyboard
我是堆栈溢出的新手,这是我的第一个 post 所以请耐心等待我!
我已设置好 sw_rear 和 sw_front,它们运行良好。
然而,当我尝试为我的 sw_right 创建一个充满原型单元格的 table 视图时,我发现当我尝试滑动甚至按下按钮以访问正确的菜单应用程序崩溃而没有任何错误打印到日志中。
(我在 2 个单独的 swift 文件中有 2 个数组 rearVc 和 rightVC 链接到 2 个单独的 table 视图 sw_rear 和 sw_right)
上周我在网上搜索过(我所有的 google 超链接都是紫色的!!)但似乎根本找不到答案。我认为将此代码(在我的后方发现 table vc)复制到我的右侧 table vc 会起作用,但不幸的是它不起作用!
(编码为 SWIFT,仅供参考,我为 swrevealvc 使用了桥接头,因为我不知道 obj c)
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 中构建的自定义原型单元将填充我的列表。
两者都正确链接到我的导航控制器以及其他场景。
我知道那部分没问题,我只是坚持使用代码。
在我的根视图控制器中输入 运行 这段代码,它的工作原理非常棒,所以没有问题。
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;
}
我是堆栈溢出的新手,这是我的第一个 post 所以请耐心等待我!
我已设置好 sw_rear 和 sw_front,它们运行良好。
然而,当我尝试为我的 sw_right 创建一个充满原型单元格的 table 视图时,我发现当我尝试滑动甚至按下按钮以访问正确的菜单应用程序崩溃而没有任何错误打印到日志中。
(我在 2 个单独的 swift 文件中有 2 个数组 rearVc 和 rightVC 链接到 2 个单独的 table 视图 sw_rear 和 sw_right)
上周我在网上搜索过(我所有的 google 超链接都是紫色的!!)但似乎根本找不到答案。我认为将此代码(在我的后方发现 table vc)复制到我的右侧 table vc 会起作用,但不幸的是它不起作用!
(编码为 SWIFT,仅供参考,我为 swrevealvc 使用了桥接头,因为我不知道 obj c)
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 中构建的自定义原型单元将填充我的列表。
两者都正确链接到我的导航控制器以及其他场景。
我知道那部分没问题,我只是坚持使用代码。
在我的根视图控制器中输入 运行 这段代码,它的工作原理非常棒,所以没有问题。
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;
}