GithubHelp home page GithubHelp logo

darielchen / dcurlrouter Goto Github PK

View Code? Open in Web Editor NEW
393.0 393.0 68.0 44 KB

通过自定义URL实现控制器之间的跳转

Home Page: http://www.jianshu.com/p/36a43202b0cd

License: MIT License

Objective-C 98.24% Ruby 1.76%
dismiss pop push-modal router

dcurlrouter's People

Contributors

darielchen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dcurlrouter's Issues

建议

建议添加一个控制器protocol,用于给使用者自定义控制器的初始化。
因为有的控制器可能是从 xib初始化 或者是 storyboard初始化 ,而不是单单纯代码。

而目前作者的代码是简单直接的 alloc, init;
在分类UIViewController (DCURLRouter)89~94 行。

        if(class !=nil){
            VC = [[class alloc]init];
            if([VC respondsToSelector:@selector(open:withQuery:)]){
                [VC open:url withQuery:query];
            }
        }

url传入webview中进行跳转不支持url含有中文和空格

作者你好:
最近项目中用到你的框架,目前发现有两个问题:

  1. 如果url中带有中文,会解析不了,找不到映射的控制器
    2.如果url中带有空格,也是同样的问题
    至于是否有其他不支持的格式,还有待测试验证,希望作者能关注这个问题

建议

建议去掉plist, 这样会让服务端控制更灵活.比如想要在线上跳转一个没有声明在plist里的的控制器 就尴尬了;

单导航控制

这个项目是不是只适用于单导航项目?如 tabbarcontroller 每个自控制器自带导航,或者 present 带有导航的 viewcontroller 都不行?
demo 里2presen3的时候你直接吧3设置为更控制器不好吧。。这样前两两个控制器被你注销了。

获取currentNavigationViewController

当我的工程的 根控制器 不是NavigationController 而是采用抽屉架构,导航栏只是作为抽屉的CenterVC 此时获取NavigationController为nil 返回的currentNavigationViewController是新创建UINavigationController 。这里算有个小bug吧,其实我是有导航的由于采用了抽屉架构,你没找到我的导航又新建了个导航。个人理解,如有差错,见谅。

关于跨 Tab 跳转的问题

用微信来举例

聊天界面在 微信 Tab, 通讯录在 通讯录 Tab,从通讯录中选择一个好友 -> 点击发消息 -> 跳转到 微信 Tab 并 push 到聊天界面。

像这样的需求,DCURLRouter 能否实现?

URL自动转义导致‘#’被转换

  • (UIViewController *)initFromString:(NSString *)urlString fromConfig:(NSDictionary *)configDict{

    // 支持对中文字符的编码
    NSString *encodeStr = [urlString stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
    return [UIViewController initFromURL:[NSURL URLWithString:encodeStr] withQuery:nil fromConfig:configDict];
    }

导致html中打不开对应的fagment
链接示例:http://some-site.com:999/dir1/dir2;param?field-1=value-1&field-2=value-2#anchor1

随便说几句关于从哪个 VC push或者 modal 出新的 VC

我们的应用做跳转思路上基本和你们的一致。
有个细节是我们所有 modal出的 都是 navigationController 然后实际的 VC 是该 nav 的 rootVC,
以此,在寻找 current VC的时候,从 appdelegate window的 rootViewController进行判断,是否为 tabbar 或者 nav , 然后对比 tabbar.selectedViewController(我们应用里面也是一个 nav) / nav 的 nav.visibleViewController != nav.topViewController 就能判断该 nav 有没有 modal 出新的页面, 如果有新的页面 则继续递归出 更上层的 nav.

可能这个方法只限规定好modal 只能 modal 出 nav 的情况. 说的不对请指正:)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.