testing
testing

Reputation: 20289

Use any UIViewController subclass as generic parameter for method

I don't want to repeat code and therefore I thought I use a method which does that for me. What I want to do is to use any UIViewController subclass as parameter (by reference). I tried something like this

private void removeViewController<T>(ref object viewController){
    if (viewController != null) {
        viewController = (T)Convert.ChangeType (viewController, typeof(T));
        viewController.RemoveFromParentViewController ();
        viewController.Dispose ();
        viewController = null;
    }
}

and call it in this way

removeFromContainer<CustomViewController> (ref customViewController);

but I can't compile. I get

Cannot convert 'ref CustomViewController' expression to type 'ref object'

on calling removeFromContainer and

Type 'object' does not contain a definition for 'RemoveFromParentViewController' and no extension method 'RemoveFromParentViewController' of type 'object' could be found.

in my method (removeFromContainer).

How can I solve that? What I'm missing?

Upvotes: 0

Views: 306

Answers (1)

Rohit Vipin Mathews
Rohit Vipin Mathews

Reputation: 11787

You can cast your object as type UIViewController and use it without generics.

private void removeViewController(object objviewController)
{
    var viewController = viewController as UIViewController
    if (viewController  != null) 
    {      
        viewController.RemoveFromParentViewController();
        viewController.Dispose ();
    }
}

Upvotes: 1

Related Questions