我有一个自定义类。它在应用程序启动时加载。我必须更改此类方法中的视图。
类别:
<?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.
}
}
我该怎么办?
答案 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
}