Я делаю это в нескольких своих приложениях. Прием к добавлению панели вкладок к navigationController базировался, приложение не должно использовать TabBarController. Добавьте Панель вкладок к представлению, сделайте контроллер представления для того представления TabBarDelegate и ответьте на пользовательские выборы на панели вкладок в коде контроллера представления.
я использую Панели вкладок, чтобы добавить дополнительные представления к представлению Панели вкладок как подпредставления, перезагрузить табличное представление с различными наборами данных, перезагрузить UIPickerView, и т.д.
Just
Type.GetType(typeName).GetMethod(methodName).Invoke(null, arguments);
, где typeName
- имя типа в виде строки, methodName
- это имя метода в виде строки, а arguments
- это массив объектов, содержащих аргументы для вызова метода.
Сначала вам нужно получить Тип (путем итерации сборки с использованием отражения)
подробности см. по этой ссылке: http://msdn.microsoft.com/en-us/library/system.reflection.propertyinfo.aspx
или используйте
Assembly.GetType
, когда у вас есть тип в руке, вы можете перебирать элементы, используя отражение или
MethodInfo method = typeof(MyClass).GetMethod("MyMethod");
, тогда вы можете использовать MethodInfo.Invoke
и передавать аргументы для вызова метода, когда вы хотите его вызвать.
То, что вы здесь делаете, отражает тип с именем Environment
и использует методы GetPropery
и GetGetMethod
для получения get метода Environment.CurrentDirectory
, например:
var getMethod = typeof(Environment).GetProperty("CurentDirectory", BindingFlags.Public | BindingFlags.Static).GetGetMethod();
var currentDirectory = (string)getMethod.Invoke(null, null);
Вызов метода get свойства возвращает его значение и эквивалентно:
var value = Environment.CurrentDirectory;
Вот базовый план того, что вы должны сделать:
Изменить: Это будет работать, если вы не знаете пространство имен статического класса. В противном случае используйте решение Даниэля Брюкнера, поскольку оно намного проще.
System.Reflection.Assembly info = typeof(System.Environment).Assembly;
Type t = info.GetType("System.Environment");
MethodInfo m = t.GetMethod("GetFolderPath");
object result = m.Invoke(null, arguments);