This question is locked. New answers and comments are not allowed.
I'm trying to show a view controller after selecting a TKSideDrawerItem in the Drawer. I think this post got me close http://www.telerik.com/forums/side-drawer-push-navigation-controller but I'm using C# and don't quite understand the syntax.
In the DidSelectItem method of the SideDrawerDelegate how do I show the new view controller ?
3 Answers, 1 is accepted
0
dotStaff
Top achievements
Rank 1
answered on 23 Sep 2015, 12:42 PM
// The UIApplicationDelegate for the application. This class is responsible for launching the
// User Interface of the application, as well as listening (and optionally responding) to
// application events from iOS.
[Register("AppDelegate")]
public partial class AppDelegate : UIApplicationDelegate
{
// class-level declarations
UIWindow window;
public static TKSideDrawerController sideDrawerController;
//
// This method is invoked when the application has loaded and is ready to run. In this
// method you should instantiate the window, load the UI into it and then make the window
// visible.
//
// You have 17 seconds to return from this method, or iOS will terminate your application.
//
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
//Create a new instance of the menu
UINavigationController navigationController = new UINavigationController(new Menu());
//Create a new inistance of the side drawer controller
AppDelegate.sideDrawerController = new TKSideDrawerController(navigationController);
//Set up the nav bar
UINavigationBar navBar = new UINavigationBar(new CGRect(0, 0, UIScreen.MainScreen.Bounds.Width, 64));
UINavigationItem navItem = new UINavigationItem("Getting Started");
UIBarButtonItem showSideDrawer = new UIBarButtonItem(new UIImage("menu.png"), UIBarButtonItemStyle.Plain, this, new Selector("ShowSideDrawer"));
navItem.LeftBarButtonItem = showSideDrawer;
navBar.Items = new UINavigationItem[] { navItem };
//Add the nav bar to the side drawer
AppDelegate.sideDrawerController.View.AddSubview(navBar);
// create a new window instance based on the screen size
window = new UIWindow(UIScreen.MainScreen.Bounds);
//Create an instance of the storyboard
UIStoryboard Storyboard = UIStoryboard.FromName("MainStoryboard_iPhone", null);
//Set the initial view controller
UIViewController initialViewController = Storyboard.InstantiateInitialViewController() as UIViewController;
// If you have defined a view, add it here:
window.RootViewController = initialViewController;
// make the window visible
window.MakeKeyAndVisible();
return true;
}
[Export("ShowSideDrawer")]
public void ShowSideDrawer()
{
//Show the side drawer
sideDrawerController.SideDrawer.Show();
}
}
Menu Class:
public partial class Menu : UIViewController, ITKSideDrawerDelegate
{
static bool UserInterfaceIdiomIsPhone
{
get { return UIDevice.CurrentDevice.UserInterfaceIdiom == UIUserInterfaceIdiom.Phone; }
}
public Menu()
: base(UserInterfaceIdiomIsPhone ? "Menu_iPhone" : "Menu_iPad", null)
{
}
public override void DidReceiveMemoryWarning()
{
// Releases the view if it doesn't have a superview.
base.DidReceiveMemoryWarning();
// Release any cached data, images, etc that aren't in use.
}
public override void ViewDidLoad()
{
base.ViewDidLoad();
//Set the delegate for the SideDrawer
AppDelegate.sideDrawerController.SideDrawer.Delegate = new SideDrawerDelegate(this);
//Create primary section
TKSideDrawerSection sectionPrimary = AppDelegate.sideDrawerController.SideDrawer.AddSection("Primary");
sectionPrimary.AddItem("Social");
sectionPrimary.AddItem("Promotions");
//Create secondary section
TKSideDrawerSection sectionLabels = AppDelegate.sideDrawerController.SideDrawer.AddSection("Labels");
sectionLabels.AddItem("Important");
sectionLabels.AddItem("Starred");
sectionLabels.AddItem("Sent Mail");
sectionLabels.AddItem("Drafts");
}
class SideDrawerDelegate : TKSideDrawerDelegate
{
Menu owner;
//Set the instaance of the menu
public SideDrawerDelegate(Menu owner)
{
this.owner = owner;
}
//Fires when a menu item is clicked
public override void DidSelectItem(TKSideDrawer sideDrawer, NSIndexPath indexPath)
{
string meow = sideDrawer.Title;
//Create story board instance
UIStoryboard Storyboard = UIStoryboard.FromName("MainStoryboard_iPhone", null);
//Set the initial view controller
UIViewController initialViewController = Storyboard.InstantiateViewController("Home");
//Show the new ViewController
owner.NavigationController.ShowViewController(initialViewController, null);
}
}
}
In the LoginViewController after the user is authenticated:
//Create a new window object
UIWindow window = new UIWindow(UIScreen.MainScreen.Bounds);
//Set the SideDrawerController as the root view controller and show it
window.RootViewController = AppDelegate.sideDrawerController;
window.MakeKeyAndVisible();
0
dotStaff
Top achievements
Rank 1
answered on 23 Sep 2015, 12:43 PM
The post above is how I got it working for anyone who needs its.
0
Hello, dotStaff,
thank you for sharing your approach.
It is great that you have successfully used TKSideDrawer in your project.
A new help article that covers the topic will be uploaded in our upcoming release.
The below C# code shows another example of using TKSideDrawer with UINavigationController:
In MyViewController class:
If you have any questions do not hesitate to contact us.
Regards,
Yoanna
Telerik
thank you for sharing your approach.
It is great that you have successfully used TKSideDrawer in your project.
A new help article that covers the topic will be uploaded in our upcoming release.
The below C# code shows another example of using TKSideDrawer with UINavigationController:
public
override
bool
FinishedLaunching (UIApplication application, NSDictionary launchOptions)
{
MyViewController vc =
new
MyViewController();
UINavigationController navController =
new
UINavigationController (vc);
TKSideDrawerController sideDrawerController =
new
TKSideDrawerController (navController);
this
.Window =
new
UIWindow (UIScreen.MainScreen.Bounds);
this
.Window.RootViewController = sideDrawerController;
return
true
;
}
In MyViewController class:
public
override
void
ViewDidLoad ()
{
base
.ViewDidLoad ();
this
.SideDrawer = TKSideDrawer.FindSideDrawer(
this
);
this
.SideDrawer.Delegate =
this
;
UIBarButtonItem showSideDrawerButton =
new
UIBarButtonItem (
"Show"
, UIBarButtonItemStyle.Done,
this
,
new
Selector(
"ShowSideDrawer"
));
this
.NavigationItem.RightBarButtonItem = showSideDrawerButton;
TKSideDrawerSection section =
this
.SideDrawer.AddSection (
"Section"
);
section.AddItem (
"Social"
);
section.AddItem (
"Promotions"
);
}
[Export(
"ShowSideDrawer"
)]
public
void
ShowSideDrawer() {
this
.SideDrawer.Show ();
}
[Foundation.Export (
"sideDrawer:didSelectItemAtIndexPath:"
)]
public
void
DidSelectItem (TelerikUI.TKSideDrawer sideDrawer, Foundation.NSIndexPath indexPath)
{
ViewController vc =
new
ViewController ();
vc.View.BackgroundColor = UIColor.Red;
this
.NavigationController.PushViewController (vc,
true
);
}
If you have any questions do not hesitate to contact us.
Regards,
Yoanna
Telerik
Do you want to have your say when we set our development plans?
Do you want to know when a feature you care about is added or when a bug fixed?
Explore the
Telerik Feedback Portal
and vote to affect the priority of the items