从自定义类更改视图

时间:2015-04-27 14:32:55

标签: ios swift

我有一个自定义类。它在应用程序启动时加载。我必须更改此类方法中的视图。

类别:

<?php

    $sql = "SELECT id, firstname, lastname, emailAddress FROM customers ORDER BY firstname ASC;";
    $result = $dbc->query($sql);

    if ($result->num_rows > 0) {
        // output data of each row

        while($row =  $result->fetch_assoc()) {
            echo 
                "<div class='trow'>" .  
                "<span class='fullName'>" . $row["firstname"] . " " . 
                $row["lastname"]. " </span>" . 
                "<span class='email'>" . $row["emailAddress"]. " </span>" . 
                "<span><a class='deleteMember confirmation' id='deletePrompt' href='deleteMember.php?id=".$row['id']."' title='Delete user'><i class='fa fa-times'></i></a></span>" . 
                "<span class='editMember'><a href='#' title='Edit user'><i class='fa fa-cogs'></i></a></span>" . 
                "<br></div>";
        }

    } else {
        echo "0 results";
    }

    $conn->close();
?>

我可以在视图控制器中更改视图,但此类不是import Foundation class ChatManager { class var sharedInstance: ChatManager { struct Singleton { static let instance = ChatManager() } return Singleton.instance } override init() { super.init() } function changeView() { //I need to change view here. } }

我该怎么办?

4 个答案:

答案 0 :(得分:2)

我的建议是在UIViewController中完成。您的班级不应对View部分负责。

但那不是你的问题。你可以做的是发送YourView作为参数给函数做一些逻辑并返回它。如果您必须在几个不同的位置调整YourView,请在YourView类内创建方法。如果您对几个不同的UIView创建BaseView使用相同的逻辑并在那里实现该方法,然后在您的视图BaseView中继承。

我必须再次提及它,这不是做与UI相关的东西的地方。

答案 1 :(得分:1)

这就是你通过你的UIView的方式。我同意Nick的观点,你应该在自定义View类或UIViewController类中执行View逻辑。

function changeView(yourView: UIView) {
   //I need to change view here.
}

答案 2 :(得分:0)

我同意尼克。答案是,不要。您应该将视图控制器的视图视为私有。使用视图控制器的视图进行操作违反了OOP封装原则。

如果您坚持让外部类对视图进行更改,请在类中创建一个实例方法,该方法将视图作为参数,然后将更改应用于该视图。然后,您可以从视图控制器类调用该方法来更改视图。

答案 3 :(得分:-1)

这是一个需要导航控制器的解决方案。如果您不熟悉导航控制器,我强烈建议您查看教程。它们使iOS开发人员的生活更加轻松。对不起,如果该代码在屏幕上运行。

// Switches to MyViewController, a class I have implemented somewhere else 
func moveToMyView() {

    if let navController = getNavigationController() {

        // The Identifier was set in the Identity Inspector tab on the storyboard (The field is called "Storyboard ID")
        if let myController = navController.storyboard?.instantiateViewControllerWithIdentifier( "myClassID" ) as? MyViewController {

            // Switch to the newController 
            navController.pushViewController( exerciseController, animated: true )
        }
    }    
}              

// Returns the navigation controller if it exists
func getNavigationController() -> UINavigationController? {

    if let navigationController = UIApplication.sharedApplication().keyWindow?.rootViewController  {

        return navigationController as? UINavigationController
    }
    return nil
}